RDD присоединиться к CassandraTable

Может ли кто-нибудь помочь мне в следующем запросе. У меня есть RDD с 5 столбцами. Я хочу присоединиться к столу в Cassandra. Я знал, что есть способ сделать это с помощью «joinWithCassandraTable».

Я где-то вижу синтаксис для его использования. Синтаксис: RDD.joinWithCassandraTable(KEYSPACE, имя таблицы, SomeColumns("cola","colb")) .on(SomeColumns("colc"))

Может ли кто-нибудь отправить мне правильный синтаксис ??

Я хотел бы знать, где упоминать имя столбца таблицы, которая является ключом для присоединения.


person Sri    schedule 07.06.2016    source источник
comment
я не хочу загружать всю таблицу, потому что она огромна по объему. Поэтому я не хочу регистрироваться как   -  person Sri    schedule 07.06.2016


Ответы (2)


JoinWithCassandraTable работает, извлекая из C* только те ключи разделов, которые соответствуют вашим записям RDD, поэтому он работает только с ключами разделов.

Документация находится здесь https://github.com/datastax/spark-cassandra-connector/blob/master/doc/2_loading.md#using-joinwithcassandratable

и API Doc здесь

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

Табличный метод jWCT можно использовать без свободного API, указав все аргументы в методе.

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

Но можно использовать и свободный API.

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

Эти два вызова эквивалентны

Ваш пример

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

Использует объект из RDD для объединения с colc из tablename и возвращает только cola и colb в качестве результатов объединения.

person RussS    schedule 07.06.2016

Используйте приведенный ниже синтаксис для присоединения к cassandra.

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

Это будет выглядеть примерно так,

joinedData = rdd.joinWithCassandraTable(keyspace,table).on('emp_id').select('emp_name', 'emp_city')
person Suparna Raut    schedule 13.03.2020
comment
чем этот ответ отличается от ответа Рассела? - person Alex Ott; 13.03.2020