【问题标题】:NoClassDefFoundError when using avro in spark-shell在 spark-shell 中使用 avro 时出现 NoClassDefFoundError
【发布时间】:2016-06-10 18:50:00
【问题描述】:

我一直在努力

java.lang.NoClassDefFoundError: org/apache/avro/mapred/AvroWrapper

在 DataFrame 对象上调用 show() 时。我试图通过外壳(spark-shell --master yarn)来做到这一点。我可以看到 shell 在创建 DataFrame 对象时识别了架构,但是如果我对数据执行任何操作,它在尝试实例化 AvroWrapper 时总是会抛出 NoClassDefFoundError。我尝试在集群上的$HDFS_USER/lib 目录中添加avro-mapred-1.8.0.jar,甚至在启动shell 时使用--jar 选项将其包含在内。这些选项都不起作用。任何建议将不胜感激。下面是示例代码:

scala> import org.apache.spark.sql._
scala> import com.databricks.spark.avro._
scala> val sqc = new SQLContext(sc)
scala> val df = sqc.read.avro("my_avro_file") // recognizes the schema and creates the DataFrame object
scala> df.show // this is where I get NoClassDefFoundError

【问题讨论】:

    标签: apache-spark spark-dataframe spark-avro


    【解决方案1】:

    DataFrame 对象本身是在val df =... 行创建的,但尚未读取数据。 Spark 仅在您请求某种输出(例如 df.count()df.show())时才开始读取和处理数据。

    所以最初的问题是缺少 avro-mapred 包。 尝试像这样启动您的 Spark Shell:

    spark-shell --packages org.apache.avro:avro-mapred:1.7.7,com.databricks:spark-avro_2.10:2.0.1 Spark Avro 包将 Avro Mapred 包标记为已提供,但由于某种原因,它在您的系统(或类路径)上不可用。

    【讨论】:

    • 它似乎只是坐在那里。不会进步。 org.apache.avro#avro-mapred added as a dependencycom.databricks#spark-avro_2.10 added as a dependency:: resolving dependencies :: org.apache.spark#spark-submit-parent;1.0confs: [default]
    • 这很奇怪。你能粘贴你用来启动 spark-shell 的整个命令吗?
    • 对于延迟响应的道歉,我不得不切换几天的任务。这是我正在运行的命令spark-shell --master yarn --packages org.apache.avro:avro-mapred:1.7.7,com.databricks:spark-avro_2.10:2.0.1。此外,不确定它是否有所作为,但我们正在运行 CDH 5.6。再次感谢。
    • 这可能看起来很奇怪,但请尝试将--packages 作为第一个参数,将--master 作为第二个参数。你也尝试过使用本地大师吗?
    • 等了好久终于报错了:Server access error at url https://repo1.maven.org/maven2/org/apache/avro/avro-mapred/1.7.7/avro-mapred-1.7.7.pom (java.net.ConnectException: Connection timed out)。我确信这与我们的代理有关。
    【解决方案2】:

    如果其他人遇到这个问题,我终于解决了。我删除了 CDH spark 包并从http://spark.apache.org/downloads.html 下载了它。之后一切正常。不知道 CDH 版本有什么问题,但我不会再浪费时间试图弄清楚了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 2015-06-02
      • 2011-07-14
      • 2023-03-08
      • 2016-03-11
      • 2018-09-27
      相关资源
      最近更新 更多