728x90
반응형

오류

error: scala.reflect.internal.MissingRequirementError: object java.lang.Object in compiler mirror not found.

 

원인

scala 2.11  버전과 java SDK 버전이 맞지 않아 발생하는 오류

 

해결방법

scala 버전에 맞게 java SDK를 8 버전으로 바꾼다.

나의 경우 9버전이었다.

728x90
반응형
728x90
반응형

에러 메시지

Caused by: java.lang.AssertionError: assertion failed: Concurrent update to the commit log. Multiple streaming jobs detected for

 

원인

로그에 동시 업데이트 하기 때문에 발생

 

스파크 스트리밍에서 동일한 체크포인트 위치에 두 개 이상의 다른 스파크 작업이 업데이트 하려 할 때 발생한다.

이 때 스파크 설정의 checkpointLocation을 다른 위치로 사용하면 해결할 수 있다.

 

두 개의 다른 스파크 스트리밍 작업에서 checkpoint 위치를 다르게 한다.

      .option("checkpointLocation", checkpointPath1)
      .option("checkpointLocation", checkpointPath2)
728x90
반응형
728x90
반응형

Thread 몇개로 돌리는 애플리케이션이 있다.

어떤 thread가 어떤 작업을 하는지 알고싶었다. 그래서 thread id 찍어보고 싶은데 어떻게 찍는지 몰라서 찾아봄

val threadId = Thread.currentThread.getId

 

생각보다 많이 간단...!

728x90
반응형
728x90
반응형

문자열 split 방법

val s = "aa bb cc"
val splited = s.split(" ")


일반적인 split은 위와 같이 하면 된다.


dot(.)이 포함된 문자열을 split 하려고 했는데 안된다.
아래와 같이 하면 된다.

val s = "aa.bb.cc"
val splited = s.split("\\.")



dot(.)은 자바 정규식 예약어이기 때문에 \(back slash)가 필요한데 \ 자체도 예약어이기 때문에 \\ 두번 붙여야 한다.

728x90
반응형
728x90
반응형


Scala best practices에 따르면 sequence(list, map 등) 으로부터 head를 뽑을 때 `head` 보다는 `headOption` 사용을 권장

Seq.empty[Int].head
-> head of empty list exception 발생

headOption은 sequence의 head를 뽑아내는 좀 더 안전한 방법!
Seq(1, 2, 3).headOption
// res0: Option[Int] = Some(1)

Seq.empty[Int].headOption
// res1: Option[Int] = None

exception 방지를 위해서는 None이 아닌 조건을 넣으면 될듯

728x90
반응형

+ Recent posts