0
我試圖根據現有列將數據添加到我的數據框中,其中數據是自定義對象的數組。 假設對象類型是MyObject來,我試圖做這樣的事情:Apache Spark Java - 如何在類型是對象數組時獲取TypedColumn?
Column col = df.col("old_col");
Encoder<MyObject[]> encoder = Encoders.bean(MyObject[].class);
TypedColumn<Object, MyObject[]> typedColumn = col.as(encoder);
df = df.withColumn("new_col",functions.callUDF("my_udf", typedColumn));
我收到以下異常:
Caused by: java.lang.AssertionError: assertion failed
at scala.Predef$.assert(Predef.scala:156) ~[scala-library-2.11.8.jar:?]
at org.apache.spark.sql.catalyst.encoders.ExpressionEncoder$.javaBean(ExpressionEncoder.scala:87) ~[spark-catalyst_2.11-2.2.0.jar:2.2.0]
at org.apache.spark.sql.Encoders$.bean(Encoders.scala:142) ~[spark-catalyst_2.11-2.2.0.jar:2.2.0]
,因爲該類型必須是StructType,它是數組類型。
如何獲得輸入的對象在我的UDF中使用?