从pyspark DataFrame创建Cassandra表

ar7v8xwq  于 7个月前  发布在  Apache
关注(0)|答案(4)|浏览(70)

我使用的是Apache Spark 2.2.1和Cassandra 3.11,以及来自python/pyspark的Datastax spark-cassandra-connector。
我想从数据集结构中创建Cassandra Table。所以,我在Java中的DataSetFunction包中找到了一个函数createCassandraTable,但我无法找到与pyspark包的对应关系。This在Java中是一个类似的问题。
我正在尝试这样的东西:

dataset.createCassandraTable('examples', 'table_example', partitionKeyColumns = ['id'])

字符串
但是createCassandraTable不是dataset/datasrame的方法。
我知道我可以在spark中使用原始CQL创建表,但是我想动态地以编程方式这样做。虽然,这是一种替代方案,也许是spark和cassandra类型之间的Map。
有什么经验或新想法吗?Spark SQL替代方案?

pdtvr36n

pdtvr36n1#

我也面临着同样的问题。
但是有一种方法我认为这是可能的。即使用一些驱动程序,比如cassandra-driver for python。
我们可以使用可用的方法从数据框中收集require列字段,并在运行时以图解方式创建表。
之后,我们可以使用以下代码存储数据,

df.write.format("org.apache.spark.sql.cassandra").mode('append').options(table=".options(table="kv", keyspace="test")kv", keyspace="test").save()

字符串

z9zf31ra

z9zf31ra2#

我知道这是一个老问题,但是对于那些(像我一样)正在寻找如何做到这一点的人来说,你应该知道现在有一种方法可以用python/pyspark的Datastax spark-cassandra-connector来做到这一点。

df.write.mode("overwrite").format(
    "org.apache.spark.sql.cassandra"
).partitionBy("timestamp").saveAsTable(
    "myCatalog.myKeyspace.myTable"
)

字符串
您可以在此处找到描述其操作方法的文档

yvfmudvl

yvfmudvl3#

DataFrame可以通过使用org.apache.spark.sql.cassandra源代码并指定 keyspacetable 的关键字参数以及保存模式(追加,覆盖,错误或忽略等)保存到现有的Cassandra表中。
示例将Cassandra表保存为Pyspark DataFrame

df.write\
.format("org.apache.spark.sql.cassandra")\
.mode('append')\
.options(table="kv", keyspace="test")\
.save()

字符串
选项和参数与Scala Data Frames API相同。
您可以在link中找到更多详细信息。
霍普这个有用

khbbv19g

khbbv19g4#

这个怎么样?我知道这和你要找的不一样,但可能会有帮助。

from cassandra.cluster import Cluster
cluster = Cluster(['192.168.1.1', '192.168.1.2'])
session.setKeyspace('myKeyspace')
session = cluster.connect()
session.execute("CREATE TABLE users (id int PRIMARY KEY, location address)")
...
cluster.shutdown()

字符串
您甚至可以创建KEYSPACE,设置因子复制等..

相关问题