spark LOCAL 和 alluxio 客户端

spark LOCAL and alluxio client

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

我看过这里的页面: https://www.alluxio.org/docs/master/en/Debugging-Guide.html#q-why-do-i-see-exceptions-like-javalangruntimeexception-javalangclassnotfoundexception-class-alluxiohadoopfilesystem-not-found

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

根据 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 依赖项打包为应用程序的一部分。

谢谢

希望这对其他人有帮助:

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

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