Spark Dataframe join中用到Scala Seq提示没有序列化?
我在java spark-sql中想使用dataframe的多字段join功能,看了一下该接口如果要多字段join的话需要传入一个usingColumns.
public org.apache.spark.sql.DataFrame join(org.apache.spark.sql.DataFrame right, scala.collection.Seq<java.lang.String> usingColumns, java.lang.String joinType)
所以我自己在java中将List转成了Scala的Seq,代码如下
List<String> tmp = Arrays.asList(
ColumnUtil.PRODUCT_COLUMN,
ColumnUtil.EVENT_ID_COLUMN
);
scala.collection.Seq<String> usingColumns = JavaConverters.asScalaIteratorConverter(tmp.iterator()).asScala().toSeq();
DataFrame unionDf = uvDataframe.join(deviceUvDataframe, usingColumns, "inner");
结果最后在执行join的时候报错
Caused by: java.io.NotSerializableException: java.util.AbstractList$Itr
Serialization stack:
at org.apache.spark.serializer.SerializationDebugger$.improveException(SerializationDebugger.scala:40)
at org.apache.spark.serializer.JavaSerializationStream.writeObject(JavaSerializer.scala:47)
at org.apache.spark.serializer.JavaSerializerInstance.serialize(JavaSerializer.scala:101)
at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:301)
... 49 more
我测试过以下两种接口都可以正常join,就只有这种多字段join会出现没有序列化的问题,请问各位有可以解决的办法吗?
public org.apache.spark.sql.DataFrame join(org.apache.spark.sql.DataFrame right)
public org.apache.spark.sql.DataFrame join(org.apache.spark.sql.DataFrame right, java.lang.String usingColumn)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论