[英]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.