如何构建 Scala 映射并作为 arg 传递给 Python 解释器中的 Scala 构造函数?
How to construct a Scala map and pass as arg into a Scala constructor in Python interpreter?
我正在使用运行在 Java 8、Python 3.6(py4j==0.10.7)和 Scala 2.11 上的 PySpark v2.3.4 的 Jupyter Notebook,我有一个 Scala 案例 class 接受一个 Map
arg:
case class my_class(arg1: Long, arg2: Map[String, String] = Map.empty)
我想从 my_class
构造一个对象,但我不太清楚如何构造 Map
arg。下面是我关注的几个 attempts/docs,其中 sc
是我的 SparkContext。
sc._jvm.scala.collection.JavaConversions.iterableAsScalaIterable([('hello','world')]).toMap()
MapConverter().convert({'a':'b'}, sc._gateway._gateway_client)
- Py4j JavaCollections MapConverter
- 编译但 returns 一个
py4j.java_collections.JavaMap
对象而不是 scala 映射。
sc._jvm.scala.collection.JavaConverters.*
- 找不到其 docs
中存在的任何方法
这些只是我迄今为止尝试过的一些尝试。还没有真正找到关于如何做到这一点的好例子,所以任何帮助将不胜感激!
我仔细研究了 PySpark 的 src 代码并发现了这个 -- 似乎暂时修复它以供将来任何人参考:
sc._jvm.PythonUtils.toScalaMap({'hello':'world'})
我正在使用运行在 Java 8、Python 3.6(py4j==0.10.7)和 Scala 2.11 上的 PySpark v2.3.4 的 Jupyter Notebook,我有一个 Scala 案例 class 接受一个 Map
arg:
case class my_class(arg1: Long, arg2: Map[String, String] = Map.empty)
我想从 my_class
构造一个对象,但我不太清楚如何构造 Map
arg。下面是我关注的几个 attempts/docs,其中 sc
是我的 SparkContext。
sc._jvm.scala.collection.JavaConversions.iterableAsScalaIterable([('hello','world')]).toMap()
MapConverter().convert({'a':'b'}, sc._gateway._gateway_client)
- Py4j JavaCollections MapConverter
- 编译但 returns 一个
py4j.java_collections.JavaMap
对象而不是 scala 映射。
sc._jvm.scala.collection.JavaConverters.*
- 找不到其 docs 中存在的任何方法
这些只是我迄今为止尝试过的一些尝试。还没有真正找到关于如何做到这一点的好例子,所以任何帮助将不胜感激!
我仔细研究了 PySpark 的 src 代码并发现了这个 -- 似乎暂时修复它以供将来任何人参考:
sc._jvm.PythonUtils.toScalaMap({'hello':'world'})