首页 文章

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

提问于
浏览
0

我有一个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如何存储 Value 观 . 在我的数组中,日期重复,但其他值不同 .

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

1 回答

  • 0

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

    PySpark with Data Frames

    你说“我希望唯一的密钥是日期” . 我假设您的意思是分区键,因为日期在您的示例中不是唯一的 . 可以使用日期作为分区键(假设分区不会太大),但主键需要是唯一的 .

相关问题