Spark Cassandra连接器的不同使用方式



我正在尝试使用Spark Cassandra Connector对Cassandra中的数据进行分析,并发现了两种类型的实现。有人能阐明两者之间的区别以及优势/劣势吗?我正在尝试使用哪一个来查询大型数据集。感谢

选项1-使用Spark会话SQL

sparkSession.read
.format("org.apache.spark.sql.cassandra")
.options(Map( "table" -> table, "keyspace" -> keyspace))
.load()

选项2-使用SCC API

CassandraJavaUtil.javaFunctions(sc)
.cassandraTable("my_keyspace", "my_table", .mapColumnTo(Integer.class))
.select("column1");

不同之处在于,第一个使用Dataframe API,第二个使用RDD API。我预计他们之间不会有太大的性能差异。从实践的角度来看,我建议尽可能多地使用Dataframe API,因为它在对数据执行操作时可以得到更好的优化。尽管仍有一些操作仅在RDD API中可用,例如删除数据,但这也很容易在数据帧上实现…

如果你担心性能,那么我建议至少使用连接器2.5.0,它有很多优化,在我们只提供商业版本之前,比如直接加入等。(更多信息请参阅本博客(

最新更新