我有一个用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]]]]