2016-10-29 7 views
0

Я пытаюсь написать искровое приложение (в scala) в Azure HDInsight для извлечения информации из строки журнала с использованием регулярного выражения. регулярного выражение это:«Внутренняя ошибка сервера» Apache notebook Zeppelin on Azure Hdinsight

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

картина верна, потому что, если я использую Jupyter ноутбук, или работать в локальных затмениях все работает, и я могу извлечь данные из журналов.

Проблема заключается только тогда, когда я пытаюсь использовать дирижабли ноутбук вместо Jupyter, когда я пишу patt1 в виде строки (без .r) дать мне эту странную ошибку:

500 Internal Server Error 

Я также попытался импортировать Scala .util.matching.Regex перед тем, как создать регулярное выражение, но ошибка такая же. Я думаю, что есть что-то в тройной цитате или в формате, который zeppelin не позволяет, но я не могу понять, что. Кто-нибудь может мне помочь? Я хочу использовать Zeppelin вместо Jupyter, потому что я думаю, что лучше визуализировать запросы sparksql.

Но если я попытаюсь написать простой шаблон, как patt= """abc.*""".r, нет ошибок.

EDIT: Я попытался несколько раз написать регулярное выражение в Zeppelin, и кажется, что проблема заключается в том, что группы захвачены как (\ d) (\ w) и т. Д. Zeppelin scala interp (Livy) не принимает их. Но одно и то же одинаковое регулярное выражение отлично работает в jupyter. Я новичок в Скале и, может быть, я пропустил что-то очень ease.Please помочь мне

+0

вставить исключение stacktrace, вызвавшее ошибку внутреннего сервера – pamu

+0

, нет исключения stacktrace, это сообщение об ошибке – Thanas

ответ

0

Решено: я просто заменил все \ с \\ и она прекрасно работает. Кажется, что переводчик Livy не принимает ни одного \ в scala regex, но принимает \\, а затем конвертирует в \.