Мне нужно запросить таблицы cassandra с помощью Spark. Я использую библиотеку R под названием sparklyr. Когда я пытаюсь использовать условие where для ключей разделения (моя таблица cassandra имеет 2 ключа разделения), нет проблем с предоставлением по одному ключу разделения для каждого. Но если я использую несколько ключей разделения каждый, это займет слишком много времени. Как я могу справиться с этой проблемой. (С pyspark проблем нет.)
Пробовал использовать библиотеки sparlyr, dplyr, DBI. Но я не могу это решить.
Мой успешный запрос:
spark_session(sc) %>% invoke("sql", "select * from sensor_data")%>%
invoke("where", "sensor_id=109959 and filter_time ='2018060813'")%>%
invoke("count")
#it takes 2 secs. (Number of spark tasks: 2)
#
Проблема в;
spark_session(sc) %>% invoke("sql", "select * from sensor_data")%>%
invoke("where", "sensor_id=109959 and filter_time in ('2018060813','2018061107')")%>%
invoke("count")
#It takes 9 mins.(Number of spark tasks: 987)
#
Думаю, я не смог эффективно использовать ключи разделения в "in". Как я могу это решить? Есть какие-нибудь идеи по этому поводу?





Проблема решена удалением "".
Старое значение - '2018121205', новое - 2018121205.
У меня это сработало ..
Я не знаком со Sparklyr, но можете ли вы выполнить
.explainво втором запросе - я подозреваю, что предикат не передается вниз. Также - какой вариант разъема искры кассандры вы используете?