Извлечение только необходимых столбцов в Spark из Cassandra без загрузки всех столбцов - PullRequest
0 голосов
/ 18 июня 2020

Используя разъем spark-elasticsearch, можно напрямую загружать только необходимые столбцы из ES в Spark. Однако, похоже, не существует такой простой возможности сделать то же самое, используя коннектор spark-cassandra

Чтение данных из ES в Spark - здесь только необходимые столбцы переносятся из ES в Spark :

spark.conf.set('es.nodes', ",".join(ES_CLUSTER))
es_epf_df = spark.read.format("org.elasticsearch.spark.sql") \
        .option("es.read.field.include", "id_,employee_name") \
        .load("employee_0001") \

Чтение данных из Cassandra в Spark - здесь данные всех столбцов переносятся в Spark, а затем применяется select для извлечения интересующих столбцов:

spark.conf.set('spark.cassandra.connection.host', ','.join(CASSANDRA_CLUSTER))
cass_epf_df = spark.read.format('org.apache.spark.sql.cassandra') \
        .options(keyspace="db_0001", table="employee") \
        .load() \
        .select("id_", "employee_name")

Это можно сделать то же самое для Кассандры? Если да, то как. Если нет, то почему бы и нет.

Ответы [ 2 ]

2 голосов
/ 18 июня 2020

На самом деле, коннектор должен делать это сам, без необходимости явно устанавливать что-либо, это называется "предикатное выталкивание", и cassandra-connector делает это, согласно документации:

Коннектор автоматически выталкивает вниз все допустимые предикаты Кассандре. Источник данных также автоматически выберет только столбцы из Cassandra, которые необходимы для завершения запроса. Это можно отслеживать с помощью команды объяснения.

источник: https://github.com/datastax/spark-cassandra-connector/blob/master/doc/14_data_frames.md

1 голос
/ 19 июня 2020

Код, который вы написали, уже делает это. Вы написали выбор после загрузки и можете подумать, что сначала вытягиваются все столбцы, а затем выбранные столбцы фильтруются, но это не так. 1006 *

Spark будет понимать нужные столбцы и запрашивать только те из базы данных Cassandra. Эта функция называется предикатом выталкивания вниз. Это не ограничивается только cassandra, многие источники поддерживают эту функцию (это функция Spark, а не Casssandra).

Для получения дополнительной информации: https://docs.datastax.com/en/dse/6.7/dse-dev/datastax_enterprise/spark/sparkPredicatePushdown.html

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