본문 바로가기
반응형

Programming/Scala3

[Spark] RDD에서 DataFrame 변환 시 NullPointerException 문제 RDD를 DataFrame으로 변환하여 뭔가를 하는 과정에서 NPE 예기치 않은 오류가 발생했다. StackTrace를 보니 흔하디 흔한 NPE 가 발생했는데 아무리 봐도 정확한 원인을 찾을 수가 없었다. 내가 짠 코드에서 발생한 NPE라면 해당 클래스와 라인이 찍혔을텐데, 전혀 그런 흔적은 보이지 않았다. r1.map(_._2.toString).map(xml => RawParser.parse(Jsoup.parse(xml))).toDF.show [Stage 1:> (0 + 1) / 1]21/01/25 20:39:44 WARN scheduler.TaskSetManager: Lost task 0.0 in stage 1.0 (TID 1, xx, executor 52): java.lang.NullPointerE.. 2021. 1. 26.
IntelliJ SBT compile Error (Out Of Memory) Intellj 로컬에서 Scala Compile을 할 때 SBT compile을 사용한다. SBT Console SBT Action 에서 compile 커맨드로 컴파일을 하지만 다음과 같은 Out Of Memory (OOM) 오류가 발생했다. [debug] Forcing garbage collection... java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) at sb.. 2020. 6. 23.
[Scala/Spark] XML 파싱 에러 (SAXParseException) 해결하고 HTML 파싱해보기 Scala로 HTML형태의 XML 파일을 파싱하는 작업을 하고 있었다. 정확히는 Spark를 활용하여 XML Raw data를 파싱하여 값을 추출하는 작업이다. XML의 attribute값 또는 value를 추출하여 DataFrame으로 변환해야되므로 반드시 파싱을 해야만 했다. 일반적인 XML 형태라면 Databricks의 spark-xml 모듈을 사용하여 손쉽게 DataFrame으로 변환하면 되지만 다루는 데이터는 일반적이지 않은 XML이다. 문제를 일으키는 XML파일은 JATS (Journal Article Tag Suite) 형식이다. JATS는 논문이나 저널의 메타데이터를 공통된 포맷을 제공한다. 이 형식은 어느정도 정형화된 포맷을 유지하지만 일부 HTML Entity가 섞여있기 때문에 평범하게.. 2020. 5. 28.