【问题标题】:Write CSV to HDFS from stream with pyarrow upload使用 pyarrow 上传将 CSV 从流中写入 HDFS
【发布时间】:2021-09-17 23:29:21
【问题描述】:

我正在尝试使用 pyarrow 上传方法以 CSV 格式将 Pandas DataFrame 保存到 HDFS,但保存的 CSV 文件为空。代码示例如下。

import io
import pandas as pd
import pyarrow as pa

df = pd.DataFrame({"x": [1, 2, 3]})
buf = io.StringIO()
df.to_csv(buf)
hdfs = pa.hdfs.connect()
hdfs.upload("path/to/hdfs/test.csv", buf)

当我在 HDFS 上检查 test.csv 的内容时,它是空的。我做错了什么?谢谢。

【问题讨论】:

    标签: pandas csv hdfs pyarrow


    【解决方案1】:

    您需要在上传前致电buf.seek(0)

    基本上你需要倒退到缓冲区的开头,否则 hdfs 认为没有什么可以上传:

    >>> buf.read()
    ''
    >>> buf.seek(0)
    0
    >>> buf.read()
    ',x\n0,1\n1,2\n2,3\n'
    >>> buf.read()
    ''
    

    【讨论】:

    • 我尝试添加 buf.seek(0) 但仍然得到一个空的 CSV 文件
    猜你喜欢
    • 2019-12-21
    • 2020-03-18
    • 2018-03-04
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 2023-03-17
    • 2016-05-22
    • 2019-04-23
    相关资源
    最近更新 更多