将时间序列数据从PySpark传输到Cassandra

时间:2017-02-01 10:25:30

标签: cassandra pyspark apache-spark-sql spark-dataframe spark-cassandra-connector

我有一个Spark Cluster和一个Cassandra集群。在pyspark中,我读了一个csv文件,然后将其转换为RDD。然后我遍历RDD中的每一行并使用mapper和reducer函数。我最终获得了以下输出(为了演示目的,我将此列表缩短了):

[(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')] 

我想浏览上面数组中的每一行,并将每个元组存储到Cassandra中的一个表中。我希望唯一的密钥是日期。现在我知道我可以将这个数组转换为数据帧,然后将其存储到Cassandra(https://github.com/datastax/spark-cassandra-connector/blob/master/doc/15_python.md#saving-a-dataframe-in-python-to-cassandra)中。如果我将列表转换为数据帧然后将其存储到Cassandra中,Cassandra仍然可以处理它吗?我想我并不完全了解Cassandra如何存储价值观。在我的数组中,日期会重复,但其他值则不同。

我在Cassandra上存储上述数据的最佳方式是什么?有没有办法让我使用python直接从Spark存储数据到Cassandra?

1 个答案:

答案 0 :(得分:0)

早期版本的DSE 4.x支持RDD,但DSE和开源Cassandra的当前连接器仅限于DataFrame操作。"

PySpark with Data Frames

你声明"我希望唯一的密钥是日期"。我假设您的意思是分区键,因为日期在您的示例中不是唯一的。可以使用日期作为分区键(假设分区不会太大),但主键必须是唯一的。