Передача временных рядов данных от PySpark до Cassandra

63
7

У меня есть Spark Cluster и кластер Cassandra. В pyspark я читаю файл csv, а затем преобразую его в RDD. Затем я просматриваю каждую строку в своем RDD и использую функцию отображения и редуктора. Я получаю следующий результат (я сделал этот список коротким для демонстрационных целей):

[(u'20170115', u'JM', u'COP'), (u'20170115', u'JM', u'GOV'), (u'20170115', u'BM', u'REB'), (u'20170115', u'OC', u'POL'), (u'20170114', u'BA', u'EDU')] 

Я хочу пройти через каждую строку в массиве выше и сохранить каждый кортеж в одну таблицу в Кассандре. Я хочу, чтобы уникальным ключом была дата. Теперь я знаю, что могу превратить этот массив в dataframe, а затем сохранить его в Cassandra (https://github.com/datastax/spark-cassandra-connector/blob/master/doc/15_python.md#saving-a-dataframe -in-python-to-cassandra). Если я превращу список в кадр данных, а затем сохраню его в Кассандре, Кассандра все еще сможет справиться с этим? Наверное, я не совсем понимаю, как Кассандра хранит ценности. В моем массиве даты повторяются, но другие значения разные.

Каков наилучший способ хранения данных в Cassandra? Есть ли способ сохранить данные непосредственно из Spark в Cassandra с помощью python?

спросил(а) 2021-01-25T22:29:35+03:00 5 месяцев назад
1
Решение
76

Более ранние версии поддерживаемых DSE 4.x RDD, но текущий разъем для DSE и open source Cassandra "ограничен только операциями DataFrame".

PySpark с фреймами данных

Вы сказали: "Я хочу, чтобы уникальный ключ был датой". Я предполагаю, что вы имеете в виду ключ от раздела, так как дата не уникальна в вашем примере. Хорошо использовать дату в качестве ключа partion (при условии, что partitons не будет слишком большим), но ваш первичный ключ должен быть уникальным.

ответил(а) 2021-01-25T22:29:35+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема