首页 > 解决方案 > 使用 Spark Cassandra 连接器的不同方式

问题描述

我正在尝试使用 Spark Cassandra 连接器对 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");

标签: apache-sparkcassandraspark-cassandra-connector

解决方案


不同的是首先使用Dataframe API,其次是RDD API。我不希望它们之间有太大的性能差异。从实际的角度来看,我会建议尽可能使用 Dataframe API,因为它可以在对数据进行操作时得到更好的优化。虽然还有一些只有 RDD API 才有的操作,比如删除数据,但是在 Dataframes 之上也很容易实现……</p>

如果您担心性能,那么我建议至少使用连接器 2.5.0,它在我们仅在商业版本中可用之前进行了很多优化,例如直接连接等(更多信息在这篇博文中)


推荐阅读