【发布时间】:2019-10-31 03:50:30
【问题描述】:
我正在尝试使用 pyspark 向 cassandra 写入数据帧,但它给我一个错误:
py4j.protocol.Py4JJavaError:调用 o74.save 时出错。 :org.apache.spark.SparkException:作业因阶段失败而中止: 阶段 3.0 中的任务 6 失败 4 次,最近一次失败:丢失任务 6.3 在 3.0 阶段(TID 24,ip-172-31-11-193.us-west-2.compute.internal, 执行者 1): java.lang.NoClassDefFoundError: com/twitter/jsr166e/LongAdder 在 org.apache.spark.metrics.OutputMetricsUpdater$TaskMetricsSupport$class.$init$(OutputMetricsUpdater.scala:107) 在 org.apache.spark.metrics.OutputMetricsUpdater$TaskMetricsUpdater.(OutputMetricsUpdater.scala:153) 在 org.apache.spark.metrics.OutputMetricsUpdater$.apply(OutputMetricsUpdater.scala:75) 在 com.datastax.spark.connector.writer.TableWriter.writeInternal(TableWriter.scala:209) 在 com.datastax.spark.connector.writer.TableWriter.insert(TableWriter.scala:197) 在 com.datastax.spark.connector.writer.TableWriter.write(TableWriter.scala:183) 在 com.datastax.spark.connector.RDDFunctions$$anonfun$saveToCassandra$1.apply(RDDFunctions.scala:36) 在 com.datastax.spark.connector.RDDFunctions$$anonfun$saveToCassandra$1.apply(RDDFunctions.scala:36) 在 org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90) 在 org.apache.spark.scheduler.Task.run(Task.scala:121) 在 org.apache.spark.executor.Executor$TaskRunner$$anonfun$10.apply(Executor.scala:408) 在 org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1360) 在 org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:414) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748)
下面是我的写代码:
DataFrame.write.format(
"org.apache.spark.sql.cassandra"
).mode(
'append'
).options(
table="student1",
keyspace="university"
).save()
我在 spark-default.conf 中添加了下面提到的 spark-caasandra 连接器
spark.jars.packages datastax:spark-cassandra-connector:2.4.0-s_2.11
我能够从 cassandra 读取数据,但问题在于写入。
【问题讨论】:
标签: pyspark amazon-emr cassandra-3.0