【发布时间】:2020-02-16 13:02:44
【问题描述】:
我有一个数据框。我需要为每条记录调用一个 Rest API。
假设数据框看起来像:
|----|-------------|-----|---------|
|UUID|PID |DEVID|FIRSTNAME|
|----|-------------|-----|---------|
|1111|1234567891011|ABC11|JOHN |
|2222|9876543256827|ABC22|HARRY |
|----|-------------|-----|---------|
第一行的 JSON 请求字符串应该看起来像(注意:json 是在 2 列上创建的,而不是全部),因为要调用的 Rest API 需要这种格式的输入:
{"applicationInfo": {"appId": "ec78fef4-92b9-3b1b-a68d-c45376b6977a"}, "requestData": [{"secureData": "JOHN", "secureDataType": "FIRSTNAME", "index": 1 }, {"secureData": "1234567891011", "secureDataType": "PID", "index": 2 } ] }
索引键的值必须动态生成,每行使用一个增量计数器。
然后,我需要调用 Rest API 将上述 JSON 作为字符串参数发送。
加密后 API 的响应如下所示:
{"responseData":[{"resultCode":"00","secureData":"63ygdydshbhgvdyw3et7edgu","secureDataType":"FIRSTNAME","index":1},{"resultCode":"00","secureData":"HKJJBJHVHG66456456FXXFFCGF","secureDataType":"PID","index":2}],"responseCode":"00","responseMessage":"SUCCESS","resultCounts":{"totalCount":2,"successCount":2,"failedCount":0}}
然后我需要阅读上面的响应并创建一个如下所示的数据框:
|----|--------------------------|-----|------------------------|
|UUID|PID |DEVID|FIRSTNAME |
|----|--------------------------|-----|------------------------|
|1111|HKJJBJHVHG66456456FXXFFCGF|ABC11|63ygdydshbhgvdyw3et7edgu|
|----|--------------------------|-----|------------------------|
如果我将初始输入数据帧转换为 JSON().collectAsList(),那么它看起来像:
[{"UUID":"1111","PID":"1234567891011","DEVID":"ABC11","FIRSTNAME":"JOHN"}, {"UUID":"2222","PID":"9876543256827","DEVID":"ABC22","FIRSTNAME":"HARRY"}]
但这不起作用,因为 Rest API 需要以某种格式输入,如上所述。 请帮忙。
【问题讨论】:
标签: json apache-spark apache-spark-sql apache-spark-dataset