用于查询大量csv文件的工具

Tool for querying large numbers of csv files

本文关键字:文件 工具 csv 查询 用于      更新时间:2023-10-16

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

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

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

我正在寻找一个工具/库,它可以直接对数据进行类似sql的查询。我已经开始研究hive、spark和其他大数据工具,但尚不清楚它们是否可以直接从源访问分区数据,在我们的例子中是通过nfs。

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

他们的开源工具能做到这一点吗?我见过一个名为Pivotal的产品,它声称可以做到这一点,但我们更愿意为开源分布式查询系统的数据编写自己的驱动程序。

任何线索都将不胜感激。

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

以下是您案例的步骤:

  1. 构建多节点火花群
  2. 将NFS装载到其中一个节点
  3. 然后,您必须以RDD的形式将数据临时加载到内存中,并开始处理它

它提供

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

限制

  1. 数据必须放入内存中才能由Spark处理
  2. 您需要使用数据框架来定义数据结构,然后可以使用嵌入scala、python、java等编程语言中的sql查询数据
  3. RDBMS中的传统SQL和spark等分布式系统中的SQL之间存在细微的差异。你需要意识到这些

使用hive,您需要将数据复制到HDFS。由于您不想将数据复制到另一个系统,因此配置单元可能不是解决方案。

相关文章: