【发布时间】:2019-06-05 17:57:47
【问题描述】:
我有一个使用 spark -sql 将数据写入 cassandra 表的场景。 我有一个 3 节点 cassandra 集群。 我创建了复制因子为 2 的表,如下所示:
CREATE TABLE keyspaceRf2. c_columnar (
id int,
company_id int,
dd date,
c_code text,
year int,
quarter int,
etc ....etc...
PRIMARY KEY (( id, year, quarter), dd, c_code, company_id )
) WITH CLUSTERING ORDER BY ( dd DESC, c_code DESC, company_id DESC);
我正在尝试将数据插入 keyspaceRf2。在 spark-cluster 上使用 spark-job 的 c_columnar 表。 正确插入的数据。 但是为了验证插入到表中的记录数,我正在运行如下计数查询
val countDf = loadFromCassandra(c_reader,"keyspaceRf2", " c_columnar");
println ( " count = " + countDf.count()
def loadFromCassandra( c_reader: DataFrameReader , keyspace: String , col_Name:String): DataFrame = {
c_reader
.options(Map( "table" -> col_Name, "keyspace" -> keyspace ))
.load()
}
执行上述代码时,会抛出如下错误
错误:
TaskSetManager:66 - Lost task 33.0 in stage 18.0 : java.io.IOException: Exception during execution of SELECT count(*) FROM "keyspaceRf2"." c_columnar" WHERE token("id", " year", " quarter") > ? AND token("id", " year", " quarter") <= ? ALLOW FILTERING: Cassandra failure during read query at consistency LOCAL_ONE (1 responses were required but only 0 replica responded, 1 failed)
at com.datastax.spark.connector.rdd.CassandraTableScanRDD.com$datastax$spark$connector$rdd$CassandraTableScanRDD$$fetchTokenRange(CassandraTableScanRDD.scala:350)
at com.datastax.spark.connector.rdd.CassandraTableScanRDD$$anonfun$17.apply(CassandraTableScanRDD.scala:367)
at com.datastax.spark.connector.rdd.CassandraTableScanRDD$$anonfun$17.apply(CassandraTableScanRDD.scala:367)
at scala.collection.Iterator$$anon$12.nextCur(Iterator.scala:434)
at scala.collection.Iterator$$anon$12.hasNext(Iterator.scala:440)
at com.datastax.spark.connector.util.CountingIterator.hasNext(CountingIterator.scala:12)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.datastax.driver.core.exceptions.ReadFailureException: Cassandra failure during read query at consistency LOCAL_ONE (1 responses were required but only 0 replica responded, 1 failed)
at com.datastax.driver.core.exceptions.ReadFailureException.copy(ReadFailureException.java:85)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.datastax.spark.connector.cql.SessionProxy.invoke(SessionProxy.scala:37)
at com.sun.proxy.$Proxy23.execute(Unknown Source)
at com.datastax.spark.connector.cql.DefaultScanner.scan(Scanner.scala:34)
at com.datastax.spark.connector.rdd.CassandraTableScanRDD.com$datastax$spark$connector$rdd$CassandraTableScanRDD$$fetchTokenRange(CassandraTableScanRDD.scala:342)
... 15 more
我在这里做错了什么?
【问题讨论】:
标签: apache-spark apache-spark-sql datastax datastax-enterprise databricks