【发布时间】:2020-12-24 08:00:28
【问题描述】:
目标:
用 scala 和 python 文件构建一个 jar 并将这个 jar 提供给 pyspark 并能够调用 scala 和 python 文件。主要的 执行将在将使用 scala 库的 python 文件中 内部使用 py4j。
如何在 jar 文件中包含 python 文件/包以及使用 SBT 的 scala 文件?
项目结构(开放以更改任何可行的方法)
parent_project
|
|-- child_project
|
|-- src
|
|-- main
|
|-- scala
|
|-- com.my_org.child_project
|
|-- s_file_1.scala
|-- s_file_2.scala
|-- python
|
|-- foo
|
|-- p_file_1.py
|-- p_file_2.py
|-- build.sbt -- for child project
|-- build.sbt -- for parent project
示例 build.sbt(用于子项目)
name := "child_project"
version := "1.0.0"
scalaVersion := "2.11.1"
val sparkVersion = "2.4.4"
lazy val dependencies = new {}
libraryDependencies ++= Seq()
示例 build.sbt(用于父项目)
lazy val child_project = project.in(file("parent_project/child_project"))
.dependsOn(parent % "provided->provided;compile->compile;test->test;runtime->runtime")
.settings(
name := "child_project",
organization := "com.my_org",
unmanagedSourceDirectories in Compile += file("/parent_project/child_project/src/main/python"),
includeFilter in (Compile, unmanagedSources) := "*.scala" || "*.java" || "*.py"
assemblySettings
)
SBT 版本 = 0.13.16
构建jar的SBT命令
"project child_project" assembly
具体问题:
- 是否可以在一个 jar 中同时包含 python 和 scala 代码?
- 是否可以将此 jar 提供给 pyspark 并从中访问 python 和 scala 文件?
- 有任何建议/解决方法/更好的选择来实现目标吗?
【问题讨论】:
标签: scala apache-spark pyspark sbt