查询大量csv文件的工具

时间:2016-01-14 05:25:40

标签: c++ hive amazon-redshift distributed-computing bigdata

我们有大量的csv文件,文件/目录按日期和其他几个因素进行分区。例如,文件可能名为/data/AAA/date/BBB.csv

有数千个文件,其中一些在GB范围内。总数据大小以兆兆字节为单位。

它们只被附加到并且通常是批量的,因此写入性能并不重要。我们不想将它加载到另一个系统中,因为我们运行的几个重要进程依赖于能够快速流式传输文件,这些进程是用c ++编写的。

我正在寻找能够直接从数据中查询数据的sql查询工具/库。我已经开始关注hive,spark和其他大数据工具,但不清楚它们是否可以直接从源访问分区数据,在我们的例子中是通过nfs。

理想情况下,我们可以通过提供列的描述以及分区信息来定义表。此外,文件是压缩的,因此处理压缩将是理想的。

他们的开源工具是这样做的吗?我见过一款名为Pivotal的产品,声称这样做,但我们宁愿为开源分布式查询系统的数据编写自己的驱动程序。

任何线索都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

Spark可以是一个解决方案。它是在内存分布式处理引擎中。数据可以加载到集群中多个节点的内存中,并可以在内存中处理。您无需将数据复制到另一个系统。

以下是您案例的步骤:

  1. 构建多节点spark群集
  2. 将NFS挂载到其中一个节点
  3. 然后你必须以RDD的形式临时将数据加载到内存中并开始处理它
  4. 提供

    1. 支持scala,python,java等编程语言
    2. 支持SQL上下文和数据框。您可以为数据定义结构并使用SQL查询开始访问
    3. 支持多种压缩算法
    4. 限制

      1. 数据必须适合内存以供Spark
      2. 处理
      3. 您需要使用数据框来定义数据结构,之后您可以使用嵌入编程语言(如scala,python,java等)中的SQL来查询数据。
      4. RDBMS中的传统SQL与Spark等分布式系统中的SQL之间存在细微差别。你需要知道这些。
      5. 使用配置单元,您需要将数据复制到HDFS。由于您不想将数据复制到另一个系统,因此配置单元可能不是解决方案。