如何自动获取文件名到数据框而不是手动指定它

时间:2016-02-03 21:58:43

标签: apache-spark pyspark

我正在尝试在Scala或python中自动化我的火花代码,这就是我想要做的事情

s3存储桶中的文件格式为filename_2016_02_01.csv.gz

从s3存储桶中,spark代码应该能够选择文件名并创建一个Dataframe

example Dataframe=sqlContext.read.format("com.databricks.spark.csv").options(header="true").options(delimiter=",").options(inferSchema="true").load("s3://bucketname/filename_2016-01-29.csv.gz")

因此,每当我运行该作业时,应选择特定日期文件并创建数据框而不是指定文件名。

关于如何为这种情况编写代码的任何想法?

先谢谢。

2 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望文件名根据该日期自动更改。 如果是这样的话:

这是一个Scala解决方案:
我使用joda-time来生成该日期。

import org.joda.time.format.DateTimeFormat
import org.joda.time.{DateTimeZone, DateTime}
...

val today = DateTime.now(DateTimeZone.UTC).toString(DateTimeFormat.forPattern("yyyy_MM_dd"))
val fileName = "filename_" + today + ".csv.gz"

...

Python解决方案:

from datetime import datetime

today = datetime.utcnow().strftime('%Y_%m_%d')
file_name = 'filename_' + today + '.csv.gz'

答案 1 :(得分:-1)

load("s3://bucketname/{}").format(file_name)