【问题标题】:RDD joinWithCassandraTableRDD joinWithCassandraTable
【发布时间】:2016-10-06 19:53:26
【问题描述】:

谁能帮我解决以下问题。 我有一个 5 列的 RDD。我想加入 Cassandra 的一张桌子。 我知道有一种方法可以使用“joinWithCassandraTable”

我在某处看到了使用它的语法。 句法: RDD.joinWithCassandraTable(KEYSPACE, tablename, SomeColumns("cola","colb")) .on(SomeColumns("colc"))

谁能给我正确的语法??

我真的想知道在哪里提到作为连接键的表的列名。

【问题讨论】:

  • 我不想加载整个表格,因为它的体积很大。所以我不想注册为

标签: apache-spark cassandra spark-cassandra-connector


【解决方案1】:

JoinWithCassandraTable 的工作原理是仅从 C* 中提取与您的 RDD 条目匹配的分区键,因此它仅适用于分区键。

文档在这里 https://github.com/datastax/spark-cassandra-connector/blob/master/doc/2_loading.md#using-joinwithcassandratable

API 文档在这里

http://datastax.github.io/spark-cassandra-connector/ApiDocs/1.6.0-M2/spark-cassandra-connector/#com.datastax.spark.connector.RDDFunctions

jWCT表方法可以在没有fluent api的情况下通过指定方法中的所有参数来使用

def joinWithCassandraTable[R](
  keyspaceName: String, 
  tableName: String, 
  selectedColumns: ColumnSelector = AllColumns, 
  joinColumns: ColumnSelector = PartitionKeyColumns)

但是fluent api也可以用

joinWithCassandraTable[R](keyspace, tableName).select(AllColumns).on(PartitionKeyColumns)

这两个调用是等价的

你的例子

RDD.joinWithCassandraTable(KEYSPACE, tablename, SomeColumns("cola","colb")) .on(SomeColumns("colc"))

使用来自RDD 的对象与tablenamecolc 进行连接,并且只返回colacolb 作为连接结果。

【讨论】:

    【解决方案2】:

    使用以下语法加入 cassandra

    joinedData = rdd.joinWithCassandraTable(keyspace,table).on(partitionKeyName).select(Column Names)
    

    它看起来像这样,

    joinedData = rdd.joinWithCassandraTable(keyspace,table).on('emp_id').select('emp_name', 'emp_city')
    

    【讨论】:

    • 这个答案与 Russel 的有什么不同?
    猜你喜欢
    • 2016-10-17
    • 1970-01-01
    • 2020-11-06
    • 2021-02-13
    • 2018-03-09
    • 1970-01-01
    • 2016-01-24
    • 2015-10-24
    • 2015-11-21
    相关资源
    最近更新 更多