【发布时间】:2017-03-09 01:36:19
【问题描述】:
我有很多结构化数据以一种非常有意义的方式存储,我希望以同样有意义的、完整和有效的方式对其进行处理。
+- some-hdfs-path/
+- level-1_var-01/
| +- level-2_var-001.csv
| +- ...
| +- level-2_var-nnn.csv
+- level-1_var-02/
| +- level-2_other-001.csv
| +- ...
| +- level-2_other-mmm.csv
+- ... /
+- level-1_var-nn/
| +- ...
每个文件大约 100MB,大约有 1,000,000 行。每个目录的文件数量(通常约为 100 个)各不相同,文件名也各不相同。换句话说,我不知道有多少文件或它们叫什么,但我确实需要它们的名称,当然还有它们的内容。
我无法处理从 sc.textFile("/some-hdfs-path/level-1_var-01/*.csv") 和 sc.wholeTextFiles("/some-hdfs-path/level-1_var-01") 收到的 RDD。
总体目标是实际获取 level-1_var/ 目录中每个文件的第一行和最后一行。合并每个 level-1_var 的结果,然后返回并在 some-other-hdfs-path/level-1-var/ 中为每个 level-1_var/ 写出全新的文件集
我是 Hadoop/Spark 和使用 RDD 的新手。我已经阅读了上述两个函数的documentation,但我仍然对如何迭代我要返回的 RDD 并进行处理感到困惑。
编辑:文件包含时间序列数据,因此不希望将每个目录中的文件内容连接起来。我愿意将文件的内容作为附加列添加到一个巨大的数据框中,而不是作为行。
【问题讨论】:
标签: python csv hadoop apache-spark hdfs