我正在像下面这样查询spark sql,并试图在一行中合并列。
interalexternalid = spark.sql("""Select InternalId, ExternalId from datatable limit 4""")
jsonDf = interalexternalid.select(to_json(struct([interalexternalid[x] for x in interalexternalid.columns])).alias("body"))
display(jsonDf)
我得到的数据是这样的。
"body"
{"InternalId":480941,"ExternalId":"a020H00001Tt7NrQAJ"}
{"InternalId":480942,"ExternalId":"a020H00001Tt7NsQAJ"}
{"InternalId":480556,"ExternalId":"a020H00001TdAEVQA3"}
{"InternalId":480557,"ExternalId":"a020H00001TdAEWQA3"}
我的目标是在 "body "列中获得如下数据
"body":
[{"InternalId": 480941}, {"ExternalId": "a020H00001Tt7NrQAJ"}]
[{"InternalId": 480942}, {"ExternalId": "a020H00001Tt7NsQAJ"}]
[{"InternalId": 480556}, {"ExternalId": "a020H00001TdAEVQA3"}]
[{"InternalId": 480557}, {"ExternalId": "a020H00001TdAEWQA3"}]
如何才能实现这一点。我在上述情况下使用python。但python和scala的解决方案将是有益的。