“500内部服务器错误”azure hdinsight上的apache笔记本齐柏林飞艇

vxf3dgd4  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(452)

我试图在azurehdinsight中编写一个spark应用程序(在scala中),使用正则表达式从日志行中提取信息。正则表达式如下:

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

这种模式是正确的,因为如果我使用jupyter笔记本,或者在eclipse中使用local,一切都正常,我能够从日志中提取数据。
问题是当我尝试使用齐柏林飞艇笔记本而不是jupyter时,当我把patt1写成一个字符串(没有.r)时,给了我一个奇怪的错误:

500 Internal Server Error

在构建正则表达式之前,我还尝试导入scala.util.matching.regex,但错误是相同的。我想在三重引号或格式中有一些东西是齐柏林飞艇不允许的,但我不明白是什么。有人能帮我吗?我想使用zeppelin而不是jupyter,因为我认为它可以更好地可视化sparksql查询。
但如果我试着写一个简单的模式 patt= """.*""".r 没有错误。
edit:i tried 在zeppelin中编写正则表达式已经有好几次了,问题似乎是如何将组捕获为(\d)(\w)等。zeppelin scala explorate(livy)不接受它们。但是同样的正则表达式在jupyter中非常有效。我刚到斯卡拉,可能错过了一些很容易的事情。请帮帮我

fnatzsnv

fnatzsnv1#

解决方法:我刚刚更换了所有 \\\ 而且效果很好。似乎livy interpeter不接受单身 \ 在scala正则表达式中,但接受 \\ 然后转换为 \ .

相关问题