如何构造 Scala 映射并作为 arg 传递到 Python 解释器中的 Scala 构造函数?

Cal*_*ang 1 python java scala py4j pyspark

我正在使用 PySpark v2.3.4 的 Jupyter Notebook 工作,该笔记本在 Java 8、Python 3.6(py4j==0.10.7)和 Scala 2.11 上运行,并且我有一个 Scala 案例类,它接受一个Maparg,如下所示:

case class my_class(arg1: Long, arg2: Map[String, String] = Map.empty)
Run Code Online (Sandbox Code Playgroud)

我想从 构造一个对象my_class,但我不太清楚如何构造Maparg。以下是我遵循的一些尝试/文档,sc我的 SparkContext 在哪里。

  • sc._jvm.scala.collection.JavaConversions.iterableAsScalaIterable([('hello','world')]).toMap()
  • MapConverter().convert({'a':'b'}, sc._gateway._gateway_client)
  • sc._jvm.scala.collection.JavaConverters.*

这些只是我迄今为止尝试过的一些尝试。还没有真正找到关于如何执行此操作的好示例,因此我们将不胜感激任何帮助!

Cal*_*ang 5

我仔细研究了 PySpark 的 src 代码并发现了这个——似乎现在可以修复它,以供将来任何人参考:

sc._jvm.PythonUtils.toScalaMap({'hello':'world'})