将Spark Partition添加为列而不读取所有文件

时间:2018-01-07 18:10:06

标签: apache-spark amazon-s3 parquet

使用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)

我只是错误地想到了这一点,我应该阅读所有文件,然后过滤?我认为按列分区的一个主要好处是,您可以通过使用分区来读取文件的子集。

0 个答案:

没有答案