scala - 使用 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 的输入路径。
解决方案
推荐阅读
- dart - 尝试计算矩阵但得到 RangeError (index): Index out of range: no index is valid: 0
- mysql - 计数(不同(col_name))在我的 sql 中不起作用
- python - 有没有办法根据一天安排不同时间的气流
- excel - 只有某些用户表单字段是强制性的,而其他是“和或”Excel VBA
- xamarin.forms - Oxyplot xamarin 形成捏缩放和平移不适用于线性系列
- javascript - 如何从文本文件中获取随机行并将其打印出来
- java - Java - 将对象数组存储为另一个对象的值并调用该值的字段
- c - 编译链接库时c函数出错
- javascript - 通过 Apply 调用函数与从 Currying 函数直接调用
- azure-devops - Azure Devops - 托管 XML:基于条件的规则