首页 > 解决方案 > 使用 spark submit 从资源目录中读取基本文件

问题描述

我不知道为什么在这个世界上这会给我带来这么多的悲伤,但确实如此。当我运行 spark-submit 并将其传递给 spark.read 时,我怎样才能非常简单地从 uber jar 打包资源目录中获取我的 txt 文件?是的。IDE 简单且有效。但是使用 spark-submit 运行时,老式的好方法困扰着我:

Path does not exist: file:/opt/spark/jars/<myjar>.jar!/datasets/mllib/sample_kmeans_data.txt

我的文件夹结构非常标准:

src
  main
    resources
      sample_kmeans_data.txt

我的香草装载机:

val kmeansData = 
  getClass.getClassLoader.getResource("datasets/mllib/sample_kmeans_data.txt").getPath
val dataset: DataFrame = spark.read
  .format("libsvm")
  .load(kmeansData)
dataset.show

提取 jar 后,我还确认datasets了根级别的文件夹,并且我尝试了许多不同版本的 classLoader,都导致相同的错误。最后,在没有 spark 的情况下将文件作为流或输入缓冲区读取可以正常工作,并且可以通过 spark 提交清楚地从 jar 中获取文件。我被 spark 中的加载器需要的东西绊倒了,因为它只是来自 jar 的输入路径。

标签: scalaapache-sparksbt

解决方案


推荐阅读