将 Python 请求中的类似 CSV 的文本响应写入 PySpark Dataframe

问题描述 投票:0回答:1

我正在使用 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 的“文件”部分,然后将其转换为表格?我可以通过运行以编程方式执行此操作笔记本?)

谢谢!

python dataframe csv pyspark microsoft-fabric
1个回答
0
投票

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)
© www.soinside.com 2019 - 2024. All rights reserved.