【发布时间】:2017-03-12 07:13:33
【问题描述】:
我正在尝试在 Azure HDInsight 中编写一个 spark 应用程序(在 scala 中),以使用正则表达式从日志行中提取信息。 正则表达式是这样的:
val patt1="""(?:(\w+) (\w+) (\d+) (\d+):(\d+):(\S+) (\w+) \[([^]]+)\] \((.*)\) - \[(\w+)\](?:\[(\w+)\])?\[(\w+)\]\[(\w+)\]\[\w+\]\[([^]]+)\](?:.*\[(.+)\]}))""".r
模式是正确的,因为如果我使用 Jupyter 笔记本,或者在 Eclipse 中本地工作,一切正常,并且我能够从日志中提取数据。
问题只是当我尝试使用 Zeppelin 笔记本而不是 Jupyter 时,当我将 patt1 写为字符串(不带 .r)时,给了我这个奇怪的错误:
500 Internal Server Error
我之前也尝试过导入 scala.util.matching.Regex 来构建正则表达式,但错误是一样的。我认为三引号或 zeppelin 不允许的格式中有一些东西,但我不明白是什么。任何人都可以帮助我吗?我想使用 Zeppelin 而不是 Jupyter,因为我认为 sparksql 查询的可视化效果更好。
但如果我尝试写一个简单的模式为patt= """abc.*""".r 则没有错误。
编辑:我尝试了几次在 Zeppelin 中编写正则表达式,似乎问题在于将组捕获为 (\d) (\w) 等。Zeppelin scala interpret(Livy) 不接受它们。 但是相同的正则表达式在 jupyter 中完美运行。 我是 scala 的新手,也许我很容易错过一些东西。请帮助我
【问题讨论】:
-
粘贴导致内部服务器错误的异常堆栈跟踪
-
没有异常stacktrace,只有这个错误信息
标签: regex scala apache-spark jupyter apache-zeppelin