我正在使用 PySpark 的 Microsoft Fabric 笔记本工作。 API 响应的标题为“Content-Type”=“text/csv”。据我看来,
response.text
似乎与'"ColA","ColB","ColC"\r"Row1A","Row1B","Row1C", ...'
类似。换句话说,从它的格式来看,我可以复制原始 Postman 输出,将其粘贴到记事本中,另存为 .csv
,在 Excel 中打开时看起来不错。
response.text
大约为45MB和16K-17K行。我想将数据放入 DataFrame 中(这样我可以使用 DF 覆盖我的 Fabric Lakehouse 表)。
我已经尝试过
df = spark.read.csv(responseText, header=False, schema=mySchema)
。数据和我的架构有 64 个字段。我花了 15 分钟才取消跑步,因为我不确定自己是否做错了什么。我打算明天用 header=True
和 inferSchema=True
再次尝试,但首先,在使用 response.text
之前我必须对 spark.read.csv()
进行预处理吗?应该需要这么长时间吗?有没有更有效的方法将其转换为 DataFrame? (例如:我可以将响应保存为笔记本中的 .csv
文件,然后从中保存 read.csv()
吗?)
(对于 Fabric 专家来说,是否可以将文本保存为 file.csv 并将其上传到 Lakehouse 的“文件”部分,然后将其转换为表格?我可以通过运行以编程方式执行此操作笔记本?)
谢谢!
spark.read.csv 需要文件名,而不是文件的内容。
因此,首先将数据写入 Lakehouse 文件,如下所示:
text= """
"ColA","ColB","ColC"
"Row1A","Row1B","Row1C"
"Row2A","Row2B","Row2C"
"""
with open('/lakehouse/default/Files/foo.csv', 'w') as f:
f.write(text)
df = spark.read.csv("Files/foo.csv",header=True);
display(df)