繁体   English   中英

通过 PySpark/Databricks 将 JSON 直接从 API 读入 DataFrame

[英]Read JSON Direct from API into DataFrame via PySpark/Databricks

我正在尝试改进我们现有的流程。 目前流程是:

API 调用 > JSON 保存为文件 > API 调用以多个文件结束 > 然后将文件读入 Databricks Dataframe。

我试图消除将 JSON 另存为文件的需要,然后在遍历数据之前使用 read.json 将文件本身放入 dataframe 中。

有没有办法将 json 响应读入字符串,然后直接读入数据框?

我的尝试如下,但一直失败:

payload={}
headers = {
      'Authorization': 'Basic ==',
      'Cookie': 'JSESSIONID='
    }

response = requests.request("GET", apipath, headers=headers, data=payload)

jsonData = json.dumps(response.text)

jsonDataList = []
jsonDataList.append(jsonData)

jsonRDD = sc.parallelize(jsonDataList)

df = spark.read.json(jsonRDD)

但是我做了一个 df.printSchema() 并被告知它的“损坏”数据。

我还尝试执行以下操作:

payload={}
headers = {
      'Authorization': 'Basic ==',
      'Cookie': 'JSESSIONID='
    }

response = requests.request("GET", apipath, headers=headers, data=payload)

jsonData = json.dumps(response.text)

#jsonDataList = []
#jsonDataList.append(jsonData)

#jsonRDD = sc.parallelize(jsonDataList)

df = spark.read.json(jsonData)

但是在 URI 中被告知相对路径,我猜这是因为它不是直接从文件中读取的。

任何帮助将不胜感激。

我在我的环境中复制了同样的内容。 我得到以下结果:

在此处输入图像描述

要解决上述错误,请遵循以下代码:

import requests

resp = requests.get('https://reqres.in/api/users?page=1,name,href')
db1 = spark.sparkContext.parallelize([resp.text])

df2 = spark.read.json(db1)

df2.show()

Output:

在此处输入图像描述

暂无
暂无

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

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