根据spark中的模式匹配加载文件

use*_*569 2 scala apache-spark rdd

我有31个输入文件,命名为date=2018-01-01until date=2018-01-31.

我能够以这种方式将所有这些文件加载​​到rdd中:

val input = sc.textFile("hdfs://user/cloudera/date=*")
Run Code Online (Sandbox Code Playgroud)

但是如果我只想加载文件一周呢?(日期= 2018-01-15至日期= 2018-01-22的文件).

Xav*_*hot 5

您可以textFile通过以下方式单独指定文件,:

val files = (15 to 22).map(
  day => "hdfs://user/cloudera/date=2018-01-" + "%02d".format(day)
).mkString(",")
Run Code Online (Sandbox Code Playgroud)

产生:

hdfs://user/cloudera/date=2018-01-15,hdfs://user/cloudera/date=2018-01-16,hdfs://user/cloudera/date=2018-01-17,hdfs://user/cloudera/date=2018-01-18,hdfs://user/cloudera/date=2018-01-19,hdfs://user/cloudera/date=2018-01-20,hdfs://user/cloudera/date=2018-01-21,hdfs://user/cloudera/date=2018-01-22
Run Code Online (Sandbox Code Playgroud)

你可以这样称呼它:

val input = sc.textFile(files)
Run Code Online (Sandbox Code Playgroud)

注意"%02d".format(day)当天的格式(),以便将前导0添加到1到9之间的天.