我在尝试用spark读取分区数据时遇到了一个问题。
如果分区列中的数据采用特定格式,则它将在生成的Dataframe中显示为null。
例如:
case class Alpha(a: String, b:Int)
val ds1 = Seq(Alpha("2020-02-11_12h32m12s", 1), Alpha("2020-05-21_10h32m52s", 2), Alpha("2020-06-21_09h32m38s", 3)).toDS
ds1.show
+--------------------+---+
| a| b|
+--------------------+---+
|2020-02-11_12h32m12s| 1|
|2020-05-21_10h32m52s| 2|
|2020-06-21_09h32m38s| 3|
+--------------------+---+
ds1.write.partitionBy("a").parquet("test")
val ds2 = spark.read.parquet("test")
ds2.show
+---+----+
| b| a|
+---+----+
| 2|null|
| 3|null|
| 1|null|
+---+----+
你知道我怎样才能让数据显示为一个字符串(或时间戳)吗。
谢谢你的帮助。
1条答案
按热度按时间fsi0uk1n1#
只需要设置参数
spark.sql.sources.partitionColumnTypeInference.enabled
至false
.