将 json 文件传递到 JAR 或从 Spark 会话读取



我有一个用Scala写的Spark UDF。我想将我的函数与一些其他文件一起使用。

import scala.io.Source
import org.json4s.jackson.JsonMethods.parse
import org.json4s.DefaultFormats
object consts {
implicit val formats = DefaultFormats
val my_map = parse(Source.fromFile("src/main/resources/map.json").mkString).extract[Map[String, Map[String, List[String]]]]
}

现在我想在 UDF 中使用my_map对象。所以我基本上是这样做的:

import package.consts.my_map
object myUDFs{
*bla-bla and use my_map*
}

我已经在本地测试了我的函数,所以它运行良好。 现在我想了解如何打包 jar 文件以便.json文件保留在那里?

谢谢。

如果您使用 Maven 管理项目,您可以将.json文件放在src/main/resources下,因为它是Maven查找项目资源的默认位置。

您还可以为资源定义自定义路径,如下所述:https://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html

UPD:我设法通过创建fatJar并以这种方式读取我的资源文件来做到这一点:

Source
.fromInputStream(
getClass.getClassLoader.getResourceAsStream("map.json")
)
.mkString
).extract[Map[String, Map[String, List[String]]]]

最新更新