用于查询大量csv文件的工具
Tool for querying large numbers of csv files
我们有大量的csv文件,文件/目录按日期和其他几个因素进行分区。例如,文件可以命名为/data/AAA/date/BBB.csv
有数千个文件,其中一些文件的大小在GB范围内。总数据大小以TB为单位。
它们只被附加到,并且通常是批量的,所以写性能并没有那么重要。我们不想将其加载到另一个系统中,因为我们运行的几个重要进程依赖于能够快速流式传输用c++编写的文件。
我正在寻找一个工具/库,它可以直接对数据进行类似sql的查询。我已经开始研究hive、spark和其他大数据工具,但尚不清楚它们是否可以直接从源访问分区数据,在我们的例子中是通过nfs。
理想情况下,我们可以通过给出列的描述以及分区信息来定义表。此外,文件是经过压缩的,因此处理压缩是理想的。
他们的开源工具能做到这一点吗?我见过一个名为Pivotal的产品,它声称可以做到这一点,但我们更愿意为开源分布式查询系统的数据编写自己的驱动程序。
任何线索都将不胜感激。
Spark可以是一个解决方案。它是内存中的分布式处理引擎。数据可以加载到集群中多个节点上的内存中,并可以在内存中进行处理。您不需要将数据复制到另一个系统。
以下是您案例的步骤:
- 构建多节点火花群
- 将NFS装载到其中一个节点
- 然后,您必须以RDD的形式将数据临时加载到内存中,并开始处理它
它提供
- 支持scala、python、java等编程语言
- 支持SQL上下文和数据帧。您可以定义数据的结构并开始使用SQL查询进行访问
- 支持多种压缩算法
限制
- 数据必须放入内存中才能由Spark处理
- 您需要使用数据框架来定义数据结构,然后可以使用嵌入scala、python、java等编程语言中的sql查询数据
- RDBMS中的传统SQL和spark等分布式系统中的SQL之间存在细微的差异。你需要意识到这些
使用hive,您需要将数据复制到HDFS。由于您不想将数据复制到另一个系统,因此配置单元可能不是解决方案。
相关文章:
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- CMake 工具链文件:嵌入式开发的适当值"CMAKE_SYSTEM_PROCESSOR"
- 选择特定版本的 Visual Studio 命令行工具包,并根据特定版本的C++运行时环境编译文件
- 如何使用 AWS C++ 开发工具包在给定的开始和结束日期范围内列出 S3 中的文件
- 如何在cmake工具链文件中设置编译功能,以便已知的自定义编译器使用target_compile_features
- 链接库作为 CMAKE 中工具链文件中标志的一部分
- Jetson 工具链文件夹结构和交叉编译时的 libgomp 链接器错误
- 如何获取cmake工具链文件中的项目根目录,这可能吗
- 我可以通过设置工具链文件来替换调用 cmake -G<generator> 选项和调用 vcvarsall.bat吗?
- 使用开发工具包将文件上传到 AWS C++
- 自动工具: Makefile.am:如果文件存在,则链接
- 使用Linaro工具链编译CPP文件时出现错误
- 如何设置此视觉工作室 (2015) 自定义生成步骤(工具?基本上,我想要一个修改头文件(c ++)的预处理器步骤
- Buildroot 包需要一个带有C++大文件错误的工具链
- 查找Visual C++工具包括Visual Studio 2017的文件夹位置
- 致命错误C1083在IDL文件上使用OPENDDS_IDL工具时
- 使用Qt安装程序框架中的archivegen工具将文件打包为7zip存档
- 使用(希望是标准的)C++工具读取文件*
- Visual Studio 14.0 和 Windows 工具包中的错误包括文件夹
- CMake命令行定义不永久为工具链文件