在 Java 中向 scala WrappedArray 添加数据

时间:2021-07-13 09:24:36

标签: java scala apache-spark apache-spark-sql

我在 Java 代码中作为 JavaRdd.map() 调用的一部分获得了以下 Scala 行。

["A",4,[WrappedArray(["B"],["C"]),WrappedArray(["D"])]]

架构:

{"type":"struct","fields":[{"name":"id","nullable":false,"type":"string","metadata":{}},{"name":"mid","nullable":false,"type":"long","metadata":{}},{"name":"cr","nullable":false,"type":{"type":"struct","fields":[{"name":"psd","type":{"type":"array","elementType":{"type":"struct","fields":[{"name":"cid","type":"string","nullable":true,"metadata":{}}]},"containsNull":true},"nullable":true,"metadata":{}},{"name":"pqd","type":{"type":"array","elementType":{"type":"struct","fields":[{"name":"cid","type":"string","nullable":true,"metadata":{}}]},"containsNull":true},"nullable":true,"metadata":{}}]},"metadata":{}}]}

我想用上面一行的内容创建一个新行,只需将字符串“X”添加到 WrappedArray 的内部元素。

["A",4,[WrappedArray(["X", "B"],["X", "C"]),WrappedArray(["X", D"])]]

架构:

{"type":"struct","fields":[{"name":"id","nullable":false,"type":"string","metadata":{}},{"name":"mid","nullable":false,"type":"long","metadata":{}},{"name":"cr","nullable":false,"type":{"type":"struct","fields":[{"name":"psd","type":{"type":"array","elementType":{"type":"struct","fields":[{"name":"cid","type":"string","nullable":true,"metadata":{}},{"name":"renamed","type":"string","nullable":true,"metadata":{}}]},"containsNull":true},"nullable":true,"metadata":{}},{"name":"pqd","type":{"type":"array","elementType":{"type":"struct","fields":[{"name":"cid","type":"string","nullable":true,"metadata":{}},{"name":"renamed","type":"string","nullable":true,"metadata":{}}]},"containsNull":true},"nullable":true,"metadata":{}}]},"metadata":{}}]}

如何通过向 WrappedArray 内的现有结构添加额外数据来创建新 Row。

1 个答案:

答案 0 :(得分:0)

WrappedArray 是 Scala 中的类数组类型。您可以通过附加这样的元素来创建一个新的 WrappedArray,然后您可以更新对象:

val arr = new WrappedArray.ofRef(Array("a", "b", "c"))
val newArr = arr :+ "d"
相关问题