我需要将数据从一个集群传输到另一个集群。两个集群上的表结构是相同的,我需要做的是从表a中选择数据,集群1上的集群键a1并将其复制到表b,集群2上的集群键a1。这个集群键有大量的条目,我想>50.000.000我不想也不能复制整个表,因为这个表中的集群之间的数据是不同的。一种选择是编写一个脚本并循环遍历数据,写入集群2。这会起作用,但听起来效率很低,需要解决诸如“如果此脚本在操作过程中崩溃,该怎么办?”最好的方法是什么?
ttp71kqs1#
根据我的经验,spark提供了最好的机制来进行这些活动。你可以用 RDDs 以及 DataFrame 两者都有。以下是参考链接中的代码段:
RDDs
DataFrame
import com.datastax.spark.connector._ import com.datastax.spark.connector.cql._ import org.apache.spark.SparkContext sqlContext.setConf("ClusterOne/spark.cassandra.connection.host", "127.0.0.1") sqlContext.setConf("ClusterTwo/spark.cassandra.connection.host", "127.0.0.2") //Read from ClusterOne val dfFromClusterOne = sqlContext .read .format("org.apache.spark.sql.cassandra") .options(Map( "cluster" -> "ClusterOne", "keyspace" -> "ks", "table" -> "A" )) .load .filter($"id" === 'A1') //Write to ClusterTwo dfFromClusterOne .write .format("org.apache.spark.sql.cassandra") .options(Map( "cluster" -> "ClusterTwo", "keyspace" -> "ks", "table" -> "B" )) .save }
参考链接:http://www.russellspitzer.com/2016/02/16/multiple-clusters-sparksql-cassandra/在cassandra中将数据从一个集群传输到另一个集群
7cwmlq892#
对于批量数据复制,应该考虑sstableloader。这是从一个集群复制数据并加载到另一个集群的好工具。请参阅以下文件。https://cassandra.apache.org/doc/latest/tools/sstable/sstableloader.html?highlight=sstableloader
2条答案
按热度按时间ttp71kqs1#
根据我的经验,spark提供了最好的机制来进行这些活动。你可以用
RDDs
以及DataFrame
两者都有。以下是参考链接中的代码段:参考链接:
http://www.russellspitzer.com/2016/02/16/multiple-clusters-sparksql-cassandra/
在cassandra中将数据从一个集群传输到另一个集群
7cwmlq892#
对于批量数据复制,应该考虑sstableloader。这是从一个集群复制数据并加载到另一个集群的好工具。请参阅以下文件。https://cassandra.apache.org/doc/latest/tools/sstable/sstableloader.html?highlight=sstableloader