Spark Cassandra连接器在回读时丢失数据

时间:2020-06-21 03:50:05

标签: apache-spark cassandra-3.0 spark-cassandra-connector

我正在使用spark cassandra connector(python)将具有3000000行和8列的数据写入cassandra,当我读回时,我只得到50000行。 当我检查cqlsh中的行数时,也只有50000的行数,我的数据去哪儿了?spark -cassandra连接器有问题吗?

这是我的火花配置

spark = SparkSession.builder.appName("das_archive").config(
"spark.driver.memory", "25g").config('spark.cassandra.connection.host',
                                     '127.0.0.1').config(
'spark.jars.packages',
'datastax:spark-cassandra-connector:2.4.0-s_2.11')

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

阅读

 load_options = {"table": "shape1", "keyspace": "shape_db1",
                "spark.cassandra.input.split.size_in_mb": "1000",
                'spark.cassandra.input.consistency.level': "ALL"}
data_frame = spark.read.format("org.apache.spark.sql.cassandra").options(
    **load_options).load()

1 个答案:

答案 0 :(得分:0)

最可能的原因是您没有正确的主键-结果,数据被覆盖。您需要确保输入数据的每一行都由一组列唯一地标识。

P.S。如果您只是在编写以CSV之类的格式存储的数据,则可以使用DSBulk之类的工具,该工具经过了优化,可用于向Cassandra加载数据或从中卸载数据。