我有一个巨大的20Gb csv文件要复制到cassandra中,当然我需要管理错误的情况(如果服务器或传输/加载应用程序崩溃)。
我需要重新启动处理(或者是否是其他节点)并继续传输而不启动它的csv文件。
最好和最简单的方法是什么?
使用Copy CQLSH命令?使用水槽或sqoop?或使用本机java应用程序,使用spark ...?
非常感谢
答案 0 :(得分:2)
如果是我,我会分割文件。
我会选择加载任何csv数据的首选方法,忽略巨大文件大小和错误处理的问题。例如,我将使用python脚本和本机驱动程序,并使用几行csv对其进行测试,以确定它可以从具有真实数据的微小csv文件中插入。
然后我会写一个脚本将文件拆分成可管理的大小块,但是你定义它。我会尝试一些块大小来获得大约一分钟加载的文件大小。也许你需要数百个20 GB的块,但可能不需要数千个。
然后我会将整个文件拆分成这个大小的块并循环遍历块,记录它的运行方式。在任何类型的错误上,修复问题,然后从日志文件中找到的最后一个成功加载的块开始重新加载。
答案 1 :(得分:2)
以下是我首先尝试的两个注意事项,因为它们很简单且包含得很好:
答案 2 :(得分:0)
我认为CQLSH无法处理应用程序崩溃的情况,那么为什么不使用上面公开的两个解决方案,将文件拆分成几个可管理的块并使用copy cqlsh命令导入数据?