【问题标题】:Can not write Spark dataframe into Cassandra table无法将 Spark 数据帧写入 Cassandra 表
【发布时间】:2020-07-17 14:53:00
【问题描述】:

我正在将 HDP3.0 上的 spark 与 Cassandra 连接以将数据帧写入 Cassandra 表,但收到以下错误:

我写入 Cassandra 表的代码如下:

【问题讨论】:

  • 您使用什么版本的 Spark 和 Spark Cassandra 连接器?
  • 另外,请将堆栈跟踪和源代码作为文本插入,而不是作为图像插入 - 否则它们将无法搜索
  • Spark 3.2.1 scala 2.11 和 cassandra 3.0.9
  • 我用的是 spark-cassandra-connector:3.2.1-s_2.11

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


【解决方案1】:

HDP 3.0 基于使用 commons-configuration2 库的 Hadoop 3.1.1,而不是 Spark Cassandra 连接器使用的 commons-configuration。您可以使用以下内容开始您的 spark-shellspark-submit

spark-shell --packages com.datastax.spark:spark-cassandra-connector_2.11:2.3.1,commons-configuration:commons-configuration:1.10

显式添加commons-configuration

【讨论】:

    【解决方案2】:

    例外情况如下: 回溯(最近一次通话最后一次):

    中的文件“/etc/yum.repos.d/CassandraSpark.py”,第 24 行 .options(table="users", keyspace="movielens")\
    文件“/usr/hdp/current/spark2-client/python/lib/pyspark.zip/pyspark/sql/readwriter.py”,第 703 行,保存中
    调用
    中的文件“/usr/hdp/current/spark2-client/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py”,第 1257 行 文件“/usr/hdp/current/spark2-client/python/lib/pyspark.zip/pyspark/sql/utils.py”,第 63 行,在 deco
    文件“/usr/hdp/current/spark2-client/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py”,第 328 行,在 get_return_value
    py4j.protocol.Py4JJavaError: 调用 o97.save 时出错。
    : java.lang.NoClassDefFoundError: org/apache/commons/configuration/ConfigurationException
    在 org.apache.spark.sql.cassandra.DefaultSource$.(DefaultSource.scala:135)
    在 org.apache.spark.sql.cassandra.DefaultSource$.(DefaultSource.scala)
    在 org.apache.spark.sql.cassandra.DefaultSource.createRelation(DefaultSource.scala:82)
    在 org.apache.spark.sql.execution.datasources.SaveIntoDataSourceCommand.run(SaveIntoDataSourceCommand.scala:45)
    在 org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult$lzycompute(commands.scala:70)
    在 org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult(commands.scala:68)
    在 org.apache.spark.sql.execution.command.ExecutedCommandExec.doExecute(commands.scala:86)
    在 org.apache.spark.sql.execution.SparkPlan$$anonfun$execute$1.apply(SparkPlan.scala:131)
    在 org.apache.spark.sql.execution.SparkPlan$$anonfun$execute$1.apply(SparkPlan.scala:127)
    在 org.apache.spark.sql.execution.SparkPlan$$anonfun$executeQuery$1.apply(SparkPlan.scala:155)
    在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
    在 org.apache.spark.sql.execution.SparkPlan.executeQuery(SparkPlan.scala:152)
    在 org.apache.spark.sql.execution.SparkPlan.execute(SparkPlan.scala:127)
    在 org.apache.spark.sql.execution.QueryExecution.toRdd$lzycompute(QueryExecution.scala:80)
    在 org.apache.spark.sql.execution.QueryExecution.toRdd(QueryExecution.scala:80)
    在 org.apache.spark.sql.DataFrameWriter$$anonfun$runCommand$1.apply(DataFrameWriter.scala:656)
    在 org.apache.spark.sql.DataFrameWriter$$anonfun$runCommand$1.apply(DataFrameWriter.scala:656)
    在 org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:77)
    在 org.apache.spark.sql.DataFrameWriter.runCommand(DataFrameWriter.scala:656)
    在 org.apache.spark.sql.DataFrameWriter.saveToV1Source(DataFrameWriter.scala:27​​3)
    在 org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:267)
    在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
    在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    在 java.lang.reflect.Method.invoke(Method.java:498)
    在 py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244)
    在 py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357)
    在 py4j.Gateway.invoke(Gateway.java:282)
    在 py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
    在 py4j.commands.CallCommand.execute(CallCommand.java:79)
    在 py4j.GatewayConnection.run(GatewayConnection.java:238)
    在 java.lang.Thread.run(Thread.java:748)
    引起:java.lang.ClassNotFoundException:org.apache.commons.configuration.ConfigurationException
    在 java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    在 java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    在 java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 32 更多

    20/04/05 21:07:57 信息 SparkContext:从关闭挂钩调用 stop()
    20/04/05 21:07:57 信息 AbstractConnector:已停止 Spark@724de990{HTTP/1.1,[http/1.1]}{0.0.0.0:4040}
    20/04/05 21:07:57 信息 SparkUI:在 http://sandbox-hdp.hortonworks.com:4040 停止 Spark Web UI
    20/04/05 21:07:57 INFO YarnClientSchedulerBackend:中断监控线程
    20/04/05 21:07:58 INFO YarnClientSchedulerBackend:关闭所有执行程序
    20/04/05 21:07:58 INFO YarnSchedulerBackend$YarnDriverEndpoint: 要求每个执行器关闭
    20/04/05 21:07:58 信息 SchedulerExtensionServices:停止 SchedulerExtensionServices
    (服务选项=无,
    服务=列表(),
    开始=假)
    20/04/05 21:07:58 信息 YarnClientSchedulerBackend:已停止
    20/04/05 21:07:58 信息 MapOutputTrackerMasterEndpoint:MapOutputTrackerMasterEndpoint 已停止!
    20/04/05 21:07:58 信息 MemoryStore:MemoryStore 已清除
    20/04/05 21:07:58 信息 BlockManager:BlockManager 已停止
    20/04/05 21:07:58 信息 BlockManagerMaster:BlockManagerMaster 停止
    20/04/05 21:07:58 信息 OutputCommitCoordinator$OutputCommitCoordinatorEndpoint:OutputCommitCoordinator 已停止!
    20/04/05 21:07:58 INFO SparkContext:已成功停止 SparkContext
    20/04/05 21:07:58 信息 ShutdownHookManager:已调用关闭挂钩
    20/04/05 21:07:58 INFO ShutdownHookManager:删除目录 /tmp/spark-4b615cf3-aab0-44e7-bc4f-ef8039b2a26e
    20/04/05 21:07:58 INFO ShutdownHookManager:删除目录 /tmp/spark-8c4e6b45-5ade-4e73-b9b7-ec10694bf145
    20/04/05 21:07:58 INFO ShutdownHookManager:删除目录 /tmp/spark-4b615cf3-aab0-44e7-bc4f-ef8039b2a26e/pyspark-9b577311-43b8-4608-85 7e-5b0ab52553e2

    【讨论】:

      猜你喜欢
      • 2019-10-31
      • 2017-10-11
      • 2017-03-29
      • 2016-05-14
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      • 2018-08-13
      • 2018-09-06
      相关资源
      最近更新 更多