我需要从SQL Server数据库中提取2个表到Apache Parquet中的文件(我不使用Hadoop,只使用镶木地板文件)。我所知道的选项是:
将数据加载到Pandas中的数据框并保存到镶木地板文件中。但是,这种方法不会将数据从SQL Server流式传输到Parquet,而且我只有6 GB的RAM内存。
使用TurboODBC查询SQL Server,动态将数据转换为Apache Arrow,然后转换为Parquet。与上述相同的问题,TurboODBC目前不会流式传输。
是否存在可以轻松“快速”从SQL Server中的表中将1 TB数据提取到镶木地板文件的工具或库?
答案 0 :(得分:5)
您正在寻找的缺失功能是使用Turbodbc中的Apache Arrow而不是整个表批量检索结果:https://github.com/blue-yonder/turbodbc/issues/133您可以帮助实现此功能或使用{{ 1}}同时以分块的方式检索结果。
一般情况下,我建议您不要将数据导出为一个大的Parquet文件,但是要将它们作为更小的Parquet文件导出,这样可以更轻松地使用它们。大多数可以使用Parquet的所有引擎/工件都能够将多个文件作为一个大数据集处理。然后,您还可以将查询拆分为多个并行写出Parquet文件的查询。如果将导出限制为小于总内存的块,则还应该能够使用fetchnumpybatches
一次写入Parquet。
答案 1 :(得分:0)
我认为 odbc2parquet 命令行实用程序可能正是您要找的。p>
完全公开,我是作者,所以我可能对这个工具有偏见。