Выполнить CQL из pyspark - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь выполнить CQL из pyspark. В настоящее время я могу читать и писать таблицы.

$ pyspark --packages anguenot/pyspark-cassandra:0.7.0 --conf spark.cassandra.connection.host=12.34.56.78

>>> sqlContext.read\
    .format("org.apache.spark.sql.cassandra")\
    .options(table="my_table", keyspace="my_keyspace")\
    .load()

+-----+-----+--------+
|cCode|pCode|   mDate|
+-----+-----+--------+
|  135|  379|20180428|
|   31|  898|20180429|
|   31|  245|20180430|
+-----+-----+--------+

Мне бы хотелось, чтобы из моего интерфейса pyspark можно было выполнить оператор create, например:

CREATE TABLE IF NOT EXISTS keyspace_name.table_name 
( column_definition, column_definition, ...)
WITH property AND property ...

Обычно, когда я выполняю SQL в Hive, мне просто необходимо использовать sqlContext.sql(), но в этом случае мне нужно каким-то образом добавить эту информацию format("org.apache.spark.sql.cassandra") где-нибудь, и я просто не знаю, где ее разместить.

1 Ответ

0 голосов
/ 03 мая 2018

В Scala / Java есть класс CassandraConnector, который позволяет выполнять произвольные команды с помощью функции withSessionDo (см. docs ).

Но согласно документации интерфейс PySpark для Cassandra ограничен только для работы с DataFrames:

С включением источника данных Cassandra PySpark теперь можно использовать с Connector для доступа к данным Cassandra. Для этого не требуется DataStax Enterprise, но вы ограничены только операциями с DataFrame.

Таким образом, единственная возможность для - это непосредственно создать и использовать Cluster / Session классы из Python driver .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...