【发布时间】:2019-04-09 06:19:36
【问题描述】:
问:如何仅将具有 Spark DataFrame 值的列写入 Cassanrda 并有效地执行此操作? (高效地用最少的 Scala 代码行,而不是在 Cassandra 中创建一堆墓碑,让它快速运行等)
我有一个 Cassandra 表,其中包含两个键列和 300 个潜在的描述符值。
create table sample {
key1 text,
key2 text,
0 text,
............
299 text,
PRIMARY KEY (key1, key2)
}
我有一个与基础表匹配的 Spark 数据框,但是 数据框中的每一行都非常稀疏 - 除了两个键值之外,特定行可能只有 4 到 5 个带有值的“描述符”(列 0->299)。
我目前正在将 Spark 数据帧转换为 RDD 并使用 saveRdd 写入数据。
这可行,但是当没有值时,“null”会存储在列中。
例如:
val saveRdd = sample.rdd
saveRdd.map(line => (
line(0), line(1), line(2),
line(3), line(4), line(5),
line(6), line(7), line(8),
line(9), line(10), line(11),
line(12), line(13), line(14),
line(15), line(16), line(17),
line(18), line(19), line(20))).saveToCassandra..........
在 Cassandra 中创建:
XYZ | 10 | 49849 | F | |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 | |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 | TO11142017_进口 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 | 20 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |斯科特·迪克-佩迪 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 | 2014 年 7 月 13 日 0:00 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 | 0 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 | |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 | 8 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 | |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |地点 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空 |地点 |空 |空 |空 |空 |空 |空 |空 |空 |空 |空
在 SparkSession 上设置 spark.cassandra.output.ignoreNulls 不起作用:
spark.conf.set("spark.cassandra.output.ignoreNulls", "true")
spark.conf.get("spark.cassandra.output.ignoreNulls")
这也不起作用:
spark-shell --conf spark.cassandra.output.ignoreNulls=true
(尝试了不同的方法来设置它,但我设置它似乎没有任何效果)
withColumn 和 filter 似乎不是合适的解决方案。未设置的概念可能是正确的,但不确定在这种情况下如何使用它。
cassandra.3.11.2
spark-cassandra-connector:2.3.0-s_2.11
火花 2.2.0.2.6.3.0-235
谢谢!
【问题讨论】:
-
您找到解决方案了吗?
-
嗨,亚历克斯,不,从来没有找到解决方案,并且已经转移到不同的牧场。我在相关环境中查看了您的详细答案(谢谢),但无法看到您的解决方案建议,这就是为什么我没有将您的答案标记为“正确答案”;谢谢。
标签: scala apache-spark cassandra apache-spark-sql spark-cassandra-connector