如何使用Apache Spark处理每个具有不同列数的标题的文件?

时间:2016-05-19 23:25:07

标签: apache-spark

我有:

  1. s3上的数百万个文件
  2. 格式与https://github.com/databricks/spark-csv不兼容,因为它是非常糟糕的DSV规范,需要特殊处理,标题行以特殊字符开头,每个文件可以包含多个标题(提供者的特性),通常是即使在单个文件中,列也会及时更改(如果其中包含多个标题)...
  3. 每个文件都有一个标题,但标题会更改(不同的字段/列)
  4. 出于性能原因,我需要做一些事情。像这样:read.text("s3n://2016/01/*")
  5. 我找不到如何获取标题的方法,以及后面的相应行来一起处理它。无法编写每个文件分区数据的Imho自定义Partitioner,并且rdd / dataset / dataframe API不提供任何可以执行此操作的方法...

    有什么想法吗?我可以使用Spark 2.0.0。在我看来,Spark对带有标题的DSV文件并不友好,特别是如果标题不同......

1 个答案:

答案 0 :(得分:0)

最简单的策略可能是以一种理智的方式组织文件以进行进一步处理,或者构建一个哪个文件类型的目录,然后使用它来驱动构建RDD。

有关从rdd内部调用amazon s3客户端的示例,请参阅http://tech.kinja.com/how-not-to-pull-from-s3-using-apache-spark-1704509219。您可以使用它来构建该目录。