如何在Spark Dataset <Row>中使用自定义类型创建新列

时间:2019-11-21 16:29:54

标签: java apache-spark spark-structured-streaming

我有一个输入数据集,它是来自kafka-connect的记录,我将其转换为强类型数据集,然后执行一些转换。之所以这样做,是因为在转换过程中必须创建一个复杂的结构。

当前方法束缚了许多Map操作,但是源数据集中的详细信息丢失了:

Dataset<Row> inputDs = spark.readStream().format("kafka").load();

Dataset<MyClass> transformDf = inputDs
            .map(new JsonDeserializationMapper(MyClass.class), Encoders.bean(MyClass.class))
            .map(new TransformMapper(), Encoders.bean(MyClass.class))
            .map(new DataAugmentationMapper(), Encoders.bean(MyClass.class));

是否有一种方法可以在数据集中创建强类型的列,而不是创建新的数据集并丢失源数据集中的所有其他数据?类似于具有以下模式的数据集:

----------------------------------------
key:String | value:String | obj:MyClass
----------------------------------------

0 个答案:

没有答案