繁体   English   中英

将Spark Row对象转换为Java Pojo

[英]Convert spark row object to java pojo

在Spark中,我们可以使用df.as [POJO]将数据集转换为Java POJO。

我有一个用例,其中我要加入两个数据集,并想将Row对象转换为Java POJO。

联接后的行对象架构:

- 顾客ID
-messageId
-c1
-c2
-c3

Java POJO
根:
-customerId:字符串
-messageId:字符串
-内容:列表[地图]

转换后:
根:
- 顾客ID
-messageId
-内容:[{c1:v1,c2:v2,c3:v3}]

当前,我所遵循的方法是将Row对象转换为JSON,然后使用ObjectMapper将JSON转换为POJO,这是一个两步过程,转换成本很高,我们必须将此转换应用于十亿行。

是否有任何更好的方法可以将行对象转换为Java POJO,而无需转换为JSON,也无需使用反射或任何可用的默认Scala至Java转换器。 我知道在Scala中我们有可用的“ asInstanceof”,但是我不确定Java是否提供类似的东西。

我假设您有以下两个Java Bean类,简称A和B; 和数据类型Dataset [A]和Dataset [B]。

您正在加入它们,结果是DataFrame(或Dataset [Row]),并且您想要将结果的Dataset类型转换回某个bean类。

最简单的方法是创建Java bean类(如果在应用程序中使用Scala,则创建案例类),其中包含A和B之间的所有联接字段(例如,将其命名为C)。 并通过DataFrame.as [C]使用转换。

这将导致我了解您想要的内容,而无需与JSON进行中间转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM