2016-10-29 2 views
0

정규식을 사용하여 로그 라인에서 정보를 추출하려면 Azure HDInsight에서 spark 응용 프로그램 (스칼라로)을 작성하려고합니다. 정규 표현식은 이것이다 :"500 내부 서버 오류"Apache 노트북 Zeppelin on Azure Hdinsight

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

나는 일식의 모든 작품에 현지에서 Jupyter 노트북, 또는 직장을 사용하는 경우 내가 로그에서 데이터를 추출 할 수이기 때문에 패턴은 올 바릅니다.

내가 (.R없이) 문자열로 patt1를 쓸 때 저에게이 이상한 오류주는 대신 Jupyter의 제플린의 노트북을 사용하려고하면 문제는 그냥 : 나는 또한 스칼라를 가져올 시도

500 Internal Server Error 

을 정규식을 빌드하기 전에 .util.matching.Regex하지만 오류는 동일합니다. 제플린이 허용하지 않는 형식이나 3 중 따옴표에 뭔가가 있다고 생각합니다. 그러나 나는 무엇을 이해할 수 없습니다. 아무도 도와 줄 수 없니? Jupyter 대신 Zeppelin을 사용하고 싶습니다. 왜냐하면 sparksql 쿼리를 더 잘 시각화한다고 생각하기 때문입니다.

그러나 단순한 패턴을 쓸 경우 patt= """abc.*""".r 오류가 없습니다.

편집 : Zeppelin에서 정규 표현식을 쓰려고 여러 번 시도했는데 그룹을 (\ d) (\ w) 등으로 캡처하는 것이 문제인 것으로 보입니다. Zeppelin scala interpret (Livy)는이를 사용하지 않습니다. 하지만 동일한 정규 표현식이 jupyter에서 완벽하게 작동합니다. 매우 ease.Please 날이

+0

내부 서버 오류가 발생한 예외 스택 추적을 붙여 넣으십시오. – pamu

+0

예외 스택 추적이 없으며이 오류 메시지 만 있습니다. – Thanas

답변

0

를 해결하는 데 도움 내가 스칼라의 새로운 해요 어쩌면 내가 뭔가를 그리워 : 난 그냥 \\와 모든 \를 교체하고 완벽하게 작동합니다. Livy interpeter가 scala 정규 표현식에서 \을 허용하지 않고 \\을 수락 한 다음 \으로 변환합니다.