【发布时间】:2021-05-02 15:28:11
【问题描述】:
我正在编写一个 Java 应用程序。我有一个火花Dataset<MyObject>,它产生一个二进制类型的列:
Dataset<MyObject> dataset = sparkSession.createDataset(someRDD, Encoders.javaSerialization(MyObject.class));
dataset.printSchema();
//root
//|-- value: binary (nullable = true)
MyObject 有不同的(嵌套)字段,我想在我的数据集中的多个列中“分解”它们。新列还需要根据MyObject 中的多个属性计算。作为解决方案,我可以使用 .withColumn() 并应用 UDF。不幸的是,我不知道如何在 UDF 中接受二进制类型,然后将其转换为 MyObject。关于如何做到这一点的任何建议?
【问题讨论】:
-
二进制表示为字节数组,您可以尝试使用
byte[]作为 UDF 的输入类型。有关如何从 UDF 返回复杂类型的信息,请参阅此 post。
标签: java apache-spark apache-spark-dataset