使用spark 2.1。
确保将数据帧写入镶木地板时使用的分区列的最佳方法是在读回数据帧后将其添加回数据帧,而不是在所有文件中使用/*
?只想s3a://my/path/part={2018-*}
并确保我在阅读时最初使用的part
列可用。
我认为basePath
选项可以解决这个问题,它只是将路径后面的任何分区添加为列,但似乎无法使其工作。
试过这个:
我的文件很标准,看起来像这样,我希望part
作为一列添加回来:
s3a://my/path/part=20170101
s3a://my/path/part=20170102
这不起作用:
spark.read
.option("BasePath", "s3a://my/path/")
.parquet(filePath)
我只是错误地想到了这一点,我应该阅读所有文件,然后过滤?我认为按列分区的一个主要好处是,您可以通过使用分区来读取文件的子集。