【发布时间】:2020-06-10 22:21:30
【问题描述】:
我在Jupyter笔记本采用PySpark v2.3.4运行于Java的8个工作,Python的3.6(与py4j == 0.10.7),和Scala 2.11和我有一个Scala的情况下类,它在一个scala.util.matching.Regex(scala doc)作为像这样ARG:
case class myClass(myString: String, myRegex: Regex)
我想从构建myClass一个对象,但我似乎无法找出如何构造一个scala.util.matching.Regex对象在Python / PySpark环境。下面是几个我尝试/文档的我已经按照创建斯卡拉正则表达式,其中sc我SparkContext。
-
sc._jvm.scala.util.matching.Regex("""(S|s)cala""")- 错误:
Constructor scala.util.matching.Regex([class java.lang.String]) does not existLI> - 此错误消息dumbfounds我因为Scala的2.11文档清楚说明它的构造需要在
java.lang.String。
- 错误:
-
sc._jvm.scala.util.matching.Regex("(S|s)cala")- 同样的错误如上 LI>
-
sc._jvm.scala.util.matching.Regex(r"(S|s)cala")- 同样的错误如上 LI>
-
sc._jvm.scala.util.matching.Regex("(S|s)cala".r)(他们这样做在斯卡拉的方式)- 错误:Python字符串不具有属性 “R” LI>
-
sc._jvm.java.util.regex.Pattern.compile("(S|s)cala")成功创建Java正则表达式模式 - 和Scala文档中明确指出,斯卡拉正则表达式,代表了Java正则表达式包...
任何帮助/建议将不胜感激!提前致谢!
【问题讨论】:
-
所以根据this stackoverflow post似乎
new RegexVSRegex()应该是大致相同的,其中前者使用正则表达式类的自己的构造,而后者是指伴侣对象的apply方法。我可能需要重载单斯卡拉功能。 SPAN>
标签: java python regex scala pyspark