Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 从pyspark数据帧创建Cassandra表_Apache Spark_Cassandra_Pyspark_Cassandra 3.0_Spark Cassandra Connector - Fatal编程技术网

Apache spark 从pyspark数据帧创建Cassandra表

Apache spark 从pyspark数据帧创建Cassandra表,apache-spark,cassandra,pyspark,cassandra-3.0,spark-cassandra-connector,Apache Spark,Cassandra,Pyspark,Cassandra 3.0,Spark Cassandra Connector,我正在使用ApacheSpark2.2.1和Cassandra3.11以及python/pyspark中的DataStaxSparkCassandra连接器 我想从数据集结构创建Cassandra表。因此,我在Java中的DataSetFunction包中找到了一个函数createCassandraTable,但我无法找到与pyspark包的对应关系。在Java中也是一个类似的问题 我正在尝试这样的事情: dataset.createCassandraTable('examples', 'tab

我正在使用ApacheSpark2.2.1和Cassandra3.11以及python/pyspark中的DataStaxSparkCassandra连接器

我想从数据集结构创建Cassandra表。因此,我在Java中的DataSetFunction包中找到了一个函数
createCassandraTable
,但我无法找到与pyspark包的对应关系。在Java中也是一个类似的问题

我正在尝试这样的事情:

dataset.createCassandraTable('examples', 'table_example', partitionKeyColumns = ['id'])
但是
createCassandraTable
不是数据集/数据帧的方法

我知道我可以在spark中使用原始CQL create表,但我希望以动态和编程的方式这样做。尽管如此,它还是一种替代方案,可能是spark和cassandra类型之间的映射


有没有经验或新想法?Spark SQL替代方案?

数据帧可以通过使用org.apache.Spark.SQL.Cassandra源并通过指定键空间和表的关键字参数以及保存模式(追加、覆盖、错误或忽略等)保存到现有的Cassandra表中

将Cassandra表保存为Pyspark数据帧的示例

df.write\
.format("org.apache.spark.sql.cassandra")\
.mode('append')\
.options(table="kv", keyspace="test")\
.save()
这些选项和参数与Scala数据帧Api相同

你可以在这里找到更多的细节


希望,这会有所帮助。

我也面临同样的问题<但是我认为有一种方法是可能的。i、 e使用一些驱动程序,比如说python。 我们可以使用可用的方法从数据框中收集require列字段,并可以在运行时以编程方式创建表。

之后,我们可以使用以下代码存储数据

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

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

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()
您甚至可以创建键空间,设置复制因子等等。。。
请参阅此处的文档:

保存数据不是问题所在。我想以编程方式创建表。可以保存数据框内容,而不是创建结构类似于数据框模式的表。我认为createCassandraTable方法是合适的,就像在Scala或Java中一样。我建议重新措辞,使其更加自信,但不那么大胆。也就是说,去掉“可能”和其他所有事物的粗体属性。更多的细节可能也会有所帮助。他要求的函数与Scala的版本相当,当Spark Connector推断所有类型、定义表结构等时。他知道原始CQL方式……这是真的。但无论如何,有些人可能会觉得这很有帮助。我发布了它,因为在pyspark中没有其他方法,或者是吗?不,我知道。。。作者也知道可以使用原始的CQL——他提出问题的动机是,表结构应该以某种方式根据数据框架中的类型自动构建——也许有一天会有其他方法,如何实现。在此之前,我们必须使用Scala或Java,哈哈(实际上,由于pyspark的局限性,我们以前必须在其他项目中使用Javaspark:)