C++ 用于查询大量csv文件的工具
我们有大量的csv文件,文件/目录按日期和其他几个因素进行分区。例如,文件名可能为/data/AAA/date/BBB.csv 有数千个文件,其中一些大小在GB范围内。总数据大小以TB为单位 它们只会被追加,而且通常是批量的,所以写性能并不那么重要。我们不想把它加载到另一个系统中,因为我们运行的几个重要过程依赖于能够快速地流文件,这些文件是用C++编写的。 我正在寻找允许直接从数据中查询数据的类似sql的工具/库。我已经开始研究hive、spark和其他大数据工具,但不清楚它们是否可以直接从源访问分区数据,在我们的例子中,是通过nfs 理想情况下,我们可以通过给出列的描述以及分区信息来定义一个表。此外,文件是压缩的,因此处理压缩将是理想的 他们的开源工具可以做到这一点吗?我见过一个名为Pivotal的产品,它声称可以做到这一点,但我们更愿意为开放源码分布式查询系统的数据编写自己的驱动程序C++ 用于查询大量csv文件的工具,c++,hive,amazon-redshift,distributed-computing,bigdata,C++,Hive,Amazon Redshift,Distributed Computing,Bigdata,我们有大量的csv文件,文件/目录按日期和其他几个因素进行分区。例如,文件名可能为/data/AAA/date/BBB.csv 有数千个文件,其中一些大小在GB范围内。总数据大小以TB为单位 它们只会被追加,而且通常是批量的,所以写性能并不那么重要。我们不想把它加载到另一个系统中,因为我们运行的几个重要过程依赖于能够快速地流文件,这些文件是用C++编写的。 我正在寻找允许直接从数据中查询数据的类似sql的工具/库。我已经开始研究hive、spark和其他大数据工具,但不清楚它们是否可以直接从源访
任何潜在客户都将不胜感激。Spark可能是一个解决方案。它是内存中的分布式处理引擎。数据可以加载到集群中多个节点的内存中,并可以在内存中进行处理。您不需要将数据复制到另一个系统 以下是您案例的步骤:
使用hive,您需要将数据复制到HDFS。由于您不想将数据复制到另一个系统,hive可能不是解决方案。正如@isaac.hazan所说,Apache Drill 1.4为您提供了平面文件的SQL接口。最妙的是,你不必提及绝对文件。分区中的文件夹层次结构应该可以。您的示例/data/AAA/date/BBB.csv-从dfs.root启动类似于
select count(*)的查询。'/data/AAA/'代码>用于AAA中所有文件夹下的所有文件。Apache Drill是否允许您按属性指定分区函数?例如,假设您在/data/TAG1_A/yyyy-mm-dd.csv、/data/TAG1_B/yyyy-mm-dd.csv中有数据,但您只想查询特定年份的数据,Apache Drill是否可以只搜索一些文件?另一个可能的查询可能只跨TAG1的一些值,它不必遍历所有TAG1_XXX文件。我希望它的工作方式更像数据库中的分区表。对于Spark,听起来您必须手动将数据加载到内存中。我希望您能够映射分区,这样在跨文件查询时就不必显式加载每个文件。