我正试图使用pyarrow上传方法将Pandas DataFrame保存为CSV格式的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的内容时,它是空的。我做错了什么?谢谢
上传前需要调用buf.seek(0)
。
基本上,你需要倒带到缓冲区的开头,否则hdfs会认为没有什么可上传的:
>>> buf.read()
''
>>> buf.seek(0)
0
>>> buf.read()
',xn0,1n1,2n2,3n'
>>> buf.read()
''