Azure Databricks 将 JSON 数据写入 Parquet 文件引发错误:TypeError:无法推断类型的架构
Posted
技术标签:
【中文标题】Azure Databricks 将 JSON 数据写入 Parquet 文件引发错误:TypeError:无法推断类型的架构【英文标题】:Azure Databricks write JSON Data to Parquet file throws error: TypeError: Can not infer schema for type 【发布时间】:2018-09-23 15:16:25 【问题描述】:我正在使用 Python 从 WebService 下载 Microsoft Azure Databrics Notebook 中的以下数据:
"Customers" :
[
"CustomID" : "106219-891457",
"CustomerDateTime" : "0000105910",
"purchasedItems" :
[
"itemId" : "tBNU5awl2Yac",
"state" : "OBSOLETE",
"materialNumber" : "0000werqw4603100",
"materialName" : "Licasdr",
"quantity" : 1,
"orderType" : "STANDARD",
"Ingredients" :
[
"ingredientId" : "146a00dd036__7e06",
"ingedrientDesc" : "bla"
,
"ingredientId" : "146a234d036__7e06",
"ingedrientDesc" : "bla2"
],
"lastModificationDate" : "2014-09-30T10:13:46.8Z"
]
]
这很好用,我的笔记本中显示的结果如上所示。
我需要将此数据转换/写入 Parquet 文件。我正在尝试使用以下行来做到这一点
conn = httplib.HTTPSConnection('companyhost.com')
conn.request("POST", "/public/api/customers/purchases/findByDate", request, headers)
response = conn.getresponse()
data = response.read()
print(data)
conn.close()
from pyspark.sql.types import *
df = spark.createDataFrame(data)
df.show()
df.write.format('parquet').save(mypath)
但是在排队
df = spark.createDataFrame(数据)
我收到以下错误消息:
TypeError: Can not infer schema for type: type
这里发生了什么?我做错了什么?
【问题讨论】:
看来需要先将response转成json对象 @Ritesh:那该怎么做呢? 由于我不是python背景,所以不能确切地知道库名称。虽然您可以使用一些 json 库将字符串转换为 json 对象。如果这不起作用,请尝试为您的 json 创建自定义架构。也可以通过docs.databricks.com/spark/latest/data-sources/read-json.html链接 【参考方案1】:要从 json 文件创建数据框,您需要执行以下操作:
df = spark.read.json(data)
或
df = spark.read.format('json').load(data)
【讨论】:
以上是关于Azure Databricks 将 JSON 数据写入 Parquet 文件引发错误:TypeError:无法推断类型的架构的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Databricks 上将 Azure Synapse Dataframe 转换为 JSON?
使用 Azure databricks /Synapse notebooks 中的 Json.load 从 Azure datalake 读取 Json 文件作为文件
从 Azure Databricks 将数据写入 Azure Blob 存储
将 DataBricks 连接到 Azure Blob 存储