spark读取分区列显示为空

kadbb459  于 2021-05-24  发布在  Spark
关注(0)|答案(1)|浏览(509)

我在尝试用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|
    +---+----+

你知道我怎样才能让数据显示为一个字符串(或时间戳)吗。
谢谢你的帮助。

fsi0uk1n

fsi0uk1n1#

只需要设置参数 spark.sql.sources.partitionColumnTypeInference.enabledfalse .

spark.conf.set("spark.sql.sources.partitionColumnTypeInference.enabled", "false")

相关问题