基本上我需要在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。
由于
答案 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)