在S3上从多个目录创建spark数据帧

时间:2018-06-18 18:55:37

标签: scala apache-spark

基本上我需要在S3上从多个目录创建一个spark数据框。

根目录下的目录结构如下:

s3://some-bucket/data/date=2018-04-01/
s3://some-bucket/data/date=2018-04-02/
..
s3://some-bucket/data/date=2018-04-30/
s3://some-bucket/data/date=2018-05-01/
...

现在我需要为特定日期创建一个数据框(例如2018-04-26之后的10天)。

这样做的最佳方法是什么?

我知道我可以为每个目录创建一个数据帧(例如,一个用于2018-04-26,一个用于2018-04-27等),然后将所有数据帧合并以获得单个数据帧。我不确定这种方法是否有额外的开销。有没有办法指定目录列表作为数据框的输入?

我使用的编程语言是Scala。

由于

1 个答案:

答案 0 :(得分:1)

我已经用python完成了。我肯定会有相同的scala。

Spark读取功能使用变长参数功能来获取多个路径作为输入。调用spark.read函数,所有路径之间用','分隔。

dataframe = spark.read.parquet(file1_path,file2_path,file3_path,...)

FFR: 如果所有路径都在列表中怎么办?只需在调用read函数时将星号放在列表之前(*将列表视为可变长度参数)

dataframe = spark.read.parquet(*file_path_list)