【发布时间】:2020-07-01 07:26:07
【问题描述】:
我正在使用spark.read.parquet() 从分区中组织 parquet 文件的文件夹中读取数据。当分区名称以f 或d 结尾时,结果会出错。显然,Spark 会将它们解释为数字而不是字符串。我创建了一个最小的测试用例,如下所示来重现问题。
df = spark.createDataFrame([
('9q', 1),
('3k', 2),
('6f', 3),
('7f', 4),
('7d', 5),
],
schema='foo string, id integer'
)
df.write.partitionBy('foo').parquet('./tmp_parquet', mode='overwrite')
read_back_df = spark.read.parquet('./tmp_parquet')
read_back_df.show()
read_back_df 将是
+---+---+
| id|foo|
+---+---+
| 1| 9q|
| 4|7.0|
| 3|6.0|
| 2| 3k|
| 5|7.0|
+---+---+
注意分区6f/7f/7d变成6.0/7.0/7.0。
spark 版本是 2.4.3。
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql