1

我在本地模式下运行 spark 并试图让它与 alluxio 对话。我收到错误:java.lang.ClassNotFoundException: Class alluxio.hadoop.FileSystem not found

我在这里查看了页面: https ://www.alluxio.org/docs/master/en/Debugging-Guide.html#q-why-do-i-see-exceptions-like-javalangruntimeexception-javalangclassnotfoundexception-class- alluxiohadoop 文件系统未找到

其中详细说明了在这种情况下采取的步骤,但我没有找到成功。

根据 Spark 文档,我可以像这样实例化本地 Spark:

SparkSession.builder
  .appName("App")
  .getOrCreate

然后我可以像这样添加alluxio客户端库:

sparkSession.conf.set("spark.driver.extraClassPath", ALLUXIO_SPARK_CLIENT)
sparkSession.conf.set("spark.executor.extraClassPath", ALLUXIO_SPARK_CLIENT)

我已经验证了正确的 jar 文件存在于我的本地机器上的正确位置:

logger.error(sparkSession.conf.get("spark.driver.extraClassPath"))
logger.error(sparkSession.conf.get("spark.executor.extraClassPath"))

但我仍然得到错误。我还能做些什么来弄清楚为什么 Spark 没有拿起图书馆?

请注意我没有使用 spark-submit - 我知道将客户端 jar 添加到 spark-submit 作业的方法。我的 Spark 实例在我的应用程序中创建为本地实例,这是我要解决的用例。

仅供参考,集群中有另一个应用程序正在使用 fs 客户端连接到我的 alluxio,并且一切正常。但是,在这种情况下,fs 客户端通过标准 sbt 依赖项被打包为应用程序的一部分。

谢谢

4

1 回答 1

1

希望这对其他人有帮助:

我的问题不是库没有加载或不在类路径上,而是我使用的是客户端的“fs”版本而不是“hdfs”版本。

我一直在使用一个通用的 1.4 客户端——在某些时候,这个客户端被分成了一个 fs 版本和一个 hdfs 版本。当我最近更新 1.7 时,我错误地添加了“fs”版本。

于 2018-04-13T17:50:22.233 回答