“500内部服务器错误”Azure Hdinsight上的Apache笔记本Zeppelin

时间:2016-10-29 16:35:05

标签: regex scala apache-spark jupyter apache-zeppelin

我正在尝试在Azure HDInsight中编写一个spark应用程序(在scala中),以使用正则表达式从日志行中提取信息。 正则表达式是这样的:

val patt1="""(?:(\w+) (\w+) (\d+) (\d+):(\d+):(\S+)  (\w+) \[([^]]+)\]   \((.*)\) - \[(\w+)\](?:\[(\w+)\])?\[(\w+)\]\[(\w+)\]\[\w+\]\[([^]]+)\](?:.*\[(.+)\]}))""".r

模式是正确的,因为如果我使用Jupyter笔记本,或者在eclipse中本地工作,一切正常,我可以从日志中提取数据。

当我将patt1写成字符串(没有.r)时,我尝试使用Zeppelin笔记本而不是Jupyter时,问题就出现了这个奇怪的错误:

500 Internal Server Error

我还尝试在构建正则表达式之前导入scala.util.matching.Regex,但错误是一样的。我认为三重引语或齐柏林飞艇不允许的格式中有一些东西,但我无法理解。有人可以帮帮我吗?我想使用Zeppelin代替Jupyter,因为我认为可以更好地可视化sparksql查询。

但是,如果我尝试将一个简单的模式写为patt= """abc.*""".r,则没有错误。

编辑:我曾多次尝试在Zeppelin中编写正则表达式,似乎问题在于捕获组为(\ d)(\ w)等.Zeppelin scala解释(Livy)不接受它们。 但同样的正则表达式在jupyter中完美运行。 我是斯卡拉的新人,也许我很想念一些东西。请帮帮我

1 个答案:

答案 0 :(得分:0)

已解决:我刚用\替换了所有\\,但效果很好。 似乎Livy interpeter在scala regex中不接受单\但接受\\然后转换为\