回读时 spark cassandra 连接器丢失数据
spark cassandra connector missing data while reading back
我正在使用 spark cassandra 连接器 (python) 将 3000000 行和 8 列的数据写入 cassandra,当我读回时,我只得到 50000 行。
当我检查 cqlsh 中的行数时,也有 50000 中的行数,只有我的数据去哪里了 spark -cassandra 连接器有问题吗?
这是我的 spark 配置
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()
最可能的原因是您没有正确的主键 - 结果,数据被覆盖。您需要确保每一行输入数据都由一组列唯一标识。
P.S。如果您只是写入存储在 CSV 之类的文件中的数据,您可以使用像 DSBulk 这样的工具,它针对 loading/unloading 数据 to/from Cassandra 进行了大量优化。
我正在使用 spark cassandra 连接器 (python) 将 3000000 行和 8 列的数据写入 cassandra,当我读回时,我只得到 50000 行。 当我检查 cqlsh 中的行数时,也有 50000 中的行数,只有我的数据去哪里了 spark -cassandra 连接器有问题吗?
这是我的 spark 配置
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()
最可能的原因是您没有正确的主键 - 结果,数据被覆盖。您需要确保每一行输入数据都由一组列唯一标识。
P.S。如果您只是写入存储在 CSV 之类的文件中的数据,您可以使用像 DSBulk 这样的工具,它针对 loading/unloading 数据 to/from Cassandra 进行了大量优化。