Databricks PySpark: java.lang.ArrayStoreException: java.util



我遇到了一个问题,使用PySpark从使用API收集的数据到Databricks中创建数据帧。

我能够使用API连接,并使用我收集的请求库:

def gather_data():
url = www.data.com
response = requests.get(URL)
if response.status_code == 200:
return response.json()
else:
print("error")

gather_data()

这样做,我能够看到我的数据作为一个json文件,虽然当尝试使用如下函数读取:

data = gather_data()
df = spark.read.option("multiline","true").json(data)

我得到错误代码:java.lang。ArrayStoreException: java.util.HashMap

数据如下:

[72]:[{"名称":"约翰尼","id_number":12,'birthday': '2023-04-03 08:00:00.0'},{"的名字:"大卫","id_number":56岁'birthday': 2023-04-03 08:00:01 '}]

当我使用:

时也会发生同样的情况
- type(gather_data())
- df = spark.read.json(data)
- df = spark.createDataFrame([Row(**i) for I in data])

起初我以为我错过了多行,但事实并非如此。

通常在处理csv文件时,我可以直接将其读入数据帧,但这里不是这样。

通过论坛,我看到response.json()方法返回的似乎是一个字典类型,虽然我不能确认这一点,因为类型方法不会完成它。

我已经看了很多答案,但似乎还没有找到一个合适的。

我见过其他方法定义模式及其类型,但我使用许多日期时间戳,并希望保存数据,并且不确定如何使用非常大的数据集完成此任务。

问题出现了,因为你没有返回JSON作为文本,但你使用的response.json()函数返回JSON的解析表示。

您有以下选择:

  • 使用createDataFrame:
  • 从你解析的对象创建一个数据帧
data = gather_data()
df = spark.createDataFrame([data])
  • 不解析数据,并使用spark.read.json,但您需要在gather_data函数中用response.text替换response.json():
data = gather_data()
df = spark.read.json(sc.parallelize([data]))

相关内容

  • 没有找到相关文章

最新更新