我正在使用Spark Java读取数据集格式的消息。我需要调用Rest API方法(仅传递几个选定的列-PID,ACCOUNTNUM)。该方法期望数据集中出现的记录列表为JSON格式的字符串。然后,API将响应解密并以类似的JSON格式发送回去。例如如果一个数据帧中有3行或消息:
PID |ACCOUNTNUM |AMT|INDEX
----------------------------
x12a1|jkhjkhjk45454|30 |1
a67e6|7bhjbjh767667|450|2
c8978|fgj677676dfgd|650|3
我需要以下格式的formJSON应该看起来像:
[{"data":"REQUEST":[
{"PID":"x12a1","ACCOUNTNUM":"jkhjkhjk45454"},
{"PID":"a67e6","ACCOUNTNUM":"7bhjbjh767667"},
{"PID":"c8978","ACCOUNTNUM":"fgj677676dfgd"}
]}]
API将解密PID和ACCOUNTNUM字段并将返回响应,例如
[{"data":"RESPONSE":[
{"PID":"id111","ACCOUNTNUM":"12345"},
{"PID":"id222","ACCOUNTNUM":"67891"},
{"PID":"id333","ACCOUNTNUM":"23456"}
]}]
然后我需要将数据转换为所有4列的数据帧,以像下面这样加载到Hive表中:
PID |ACCOUNTNUM|AMT|INDEX
----------------------------
id111|12345 |30 |1
id222|67891 |450|2
id333|23456 |650|3
[我想知道如何从一个数据帧中的消息(2列)创建一个json格式的字符串,然后将响应(json)转换回以创建原始结构数据帧(4列)。
请帮助。
谢谢
对于上述情况,我假设数据集已经按Spark工作者的数量进行了划分,并且它是Row(数据帧)的通用数据集,那么可以采用以下机制。
注意:您提供的JSON结构似乎不正确,JSON数组为[{},{},{}]