将文件名信息附加到sc.textFile初始化的RDD

时间:2016-01-19 18:09:25

标签: apache-spark

我有一组日志文件,我想读入RDD。 这些文件都是压缩的.gz文件名是日期戳。 这些文件的来源是维基百科的页面视图统计数据

http://dumps.wikimedia.org/other/pagecounts-raw/

文件名如下所示:

pagecounts-20090501-000000.gz
pagecounts-20090501-010000.gz
pagecounts-20090501-020000.gz

我想要做的是读取目录中的所有此类文件,并将文件名中的日期(例如20090501)添加到生成的RDD的每一行。 我首先想到使用 sc.wholeTextFiles(..)而不是 sc.textFile(..),它创建了一个PairRDD,其中键是带有路径的文件名, 但 sc.wholeTextFiles()不处理压缩的.gz文件。

欢迎任何建议。

1 个答案:

答案 0 :(得分:1)

以下似乎对我Spark 1.6.0

起作用

sc.wholeTextFiles("file:///tmp/*.gz").flatMapValues(y => y.split("\n")).take(10).foreach(println)

示例输出:

  

(档案:/ C:/tmp/pagecounts-20160101-000000.gz,aa 271_a.C 1 4675)
  (档案:/ C:/tmp/pagecounts-20160101-000000.gz,aa Battaglia_di_Qade%C5%A1 / it / Battaglia_dell%27Oronte 1 4765)
  (文件:/ C:/tmp/pagecounts-20160101-000000.gz,aa类别:User_th 1   4770)
  (档案:/ C:/tmp/pagecounts-20160101-000000.gz,aa Chiron_Elias_Krase 1 4694)