将20gbcsv文件复制到cassandra的最佳方法

yc0p9oo0  于 2021-06-04  发布在  Sqoop
关注(0)|答案(3)|浏览(338)

我有一个巨大的20gbcsv文件要复制到cassandra中,当然我需要管理错误的情况(如果服务器或传输/加载应用程序崩溃)。
我需要重新开始处理(或其他节点与否),并继续传输而不启动csv文件从它开始。
做这件事最好最简单的方法是什么?
使用copy cqlsh命令?使用flume还是sqoop?或者使用本机java应用程序,使用spark?
谢谢

7qhs6swi

7qhs6swi1#

我认为cqlsh不能处理应用程序崩溃的情况,所以为什么不使用上面公开的两种解决方案,将文件分成几个可管理的块,并使用copy cqlsh命令导入数据呢?

bkkx9g8r

bkkx9g8r2#

如果是我,我会把文件分开。
我会选择一种更喜欢的方式来加载任何csv数据,而忽略了巨大的文件大小和错误处理的问题。例如,我将使用python脚本和本机驱动程序,并用几行csv对其进行测试,以查看它是否可以从一个包含真实数据的小csv文件中插入。
然后我会编写一个脚本,将文件分割成可管理大小的块,不管您如何定义它。我会尝试一些块大小来获得一个文件大小,加载大约一分钟。20 gb可能需要几百块,但可能不需要几千块。
然后我将整个文件分割成这样大小的块,并在这些块上循环,记录它是如何运行的。对于任何类型的错误,请修复该问题,然后从日志文件中找到的最后一个成功加载的块重新开始加载。

ecbunoof

ecbunoof3#

以下是我将首先尝试的两个考虑因素,因为它们简单且包含得很好:
cqlsh拷贝在2.1.13、2.2.5、3.0.3和3.2+中有了很大的改进。如果您确实考虑使用它,请确保使用这些版本之一或更新版本。
另一种选择是使用brian hess的cassandra loader,这是一种以高效方式批量加载csv文件的有效方法。

相关问题