我正在尝试使用 python2.7 中的 pandas 和 pyarrow 将 csv 文件转换为 Parquet 。
我在将字符串从 pa.Table.from_pandas(df) 转换为字符串时遇到问题。它不断将数据类型转换为“二进制”,这让 AWS Glue 非常不高兴。
我尝试了一个自定义的模式,但它不起作用。
fields = []
for name, type in dtypes.items():
fields.append(pa.field(name, type))
my_schema = pa.schema(fields)
df = pd.read_csv(StringIO(file), delimiter="\t")
table = pa.Table.from_pandas(df)
以前是在读取 csv 时指定数据类型,但这也不起作用。还尝试了 replace_schema_metadata() 但这并没有做太多,因为它不是实际的模式。
最佳答案
Python 2的str
类型其实和Parquet定义BINARY的内容是一样的,因此所有有str
对象的列都会被保存为binary
.在 Python 3 中,它们应该被正确加载为 bytes
。要在 Parquet 中将列存储为字符串/UTF-8
,您需要将列转换为 unicode
对象。
关于python - Pyarrow 使用 Pandas 不断将字符串转换为二进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49504426/