Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 将20Gb csv文件复制到cassandra的最佳方法_Apache Spark_Cassandra_Sqoop_Flume_Cqlsh - Fatal编程技术网

Apache spark 将20Gb csv文件复制到cassandra的最佳方法

Apache spark 将20Gb csv文件复制到cassandra的最佳方法,apache-spark,cassandra,sqoop,flume,cqlsh,Apache Spark,Cassandra,Sqoop,Flume,Cqlsh,我有一个巨大的20Gb csv文件要复制到cassandra中,当然我需要管理错误情况(如果服务器或传输/加载应用程序崩溃) 我需要重新启动处理(或是否启动其他节点),并在不启动csv文件的情况下继续传输 做这件事最好最简单的方法是什么 是否使用Copy CQLSH命令?使用flume还是sqoop?或者使用本机java应用程序,使用spark 非常感谢如果是我,我会分割文件 我会选择一种更好的方式来加载任何csv数据,忽略巨大的文件大小和错误处理问题。例如,我将使用python脚本和本机驱动程

我有一个巨大的20Gb csv文件要复制到cassandra中,当然我需要管理错误情况(如果服务器或传输/加载应用程序崩溃)

我需要重新启动处理(或是否启动其他节点),并在不启动csv文件的情况下继续传输

做这件事最好最简单的方法是什么

是否使用Copy CQLSH命令?使用flume还是sqoop?或者使用本机java应用程序,使用spark


非常感谢

如果是我,我会分割文件

我会选择一种更好的方式来加载任何csv数据,忽略巨大的文件大小和错误处理问题。例如,我将使用python脚本和本机驱动程序,并使用几行csv对其进行测试,以查看它是否可以从包含真实数据的小型csv文件中插入

然后,我将编写一个脚本,将文件拆分为可管理大小的块,不管您如何定义它。我会尝试一些块大小,以获得大约一分钟内加载的文件大小。20 GB可能需要数百个块,但可能不需要数千个


然后我会将整个文件分割成这样大小的块,并循环这些块,记录它是如何运行的。对于任何类型的错误,请修复该问题,然后从日志文件中找到的成功加载的最后一个块重新开始加载。

以下是我将首先尝试的两个注意事项,因为它们简单且包含良好:

  • cqlsh副本已包含在2.1.13、2.2.5、3.0.3和3.2+中。如果您确实考虑使用它,请确保处于这些版本中的一个或更新版本。
  • 另一种选择是使用Brian Hess,这是一种有效的方法,可以有效地批量加载csv文件

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

    非常感谢您的回答,我想这就是CQLSH Copy命令不做的吗?我以前不知道CQLSH实用程序。文档中没有提到错误恢复和从中间重新启动,但这可能是一种将大文件分块加载的简单方法。我愿意接受上述两种答案,但遗憾的是我不能接受