我在PySpark中将csv文件转换为拼花时遇到了问题。当转换相同模式的多个文件时,它们没有相同的模式,因为有时将数字字符串读取为浮点数,其他读取为整数,等等。列的顺序似乎也有问题。似乎当写入具有相同列的数据帧时,但是以不同的顺序排列以拼花,那么这些拼花不能在同一语句中加载。
如何写数据帧parquet,使所有列存储为字符串类型?如何处理列的顺序?在写parquet之前,我是否需要将所有数据帧的列重新排列成相同的顺序?
如果您想对列进行排序并转换为字符串类型,您可以这样做:
out_df = df.select([F.col(c).cast('string') for c in sorted(df.columns)])
out_df.write.parquet(...)