How to Run Pyro

Sebastian Kruse et al. – Efficient Discovery of Approximate Dependencies (VLDB 2018) 의 코드가 깃헙에 올라와있는 것을 확인했다. Usage가 불친절해서 간단하게 메모. 먼저 Pyro jar file을 다운받는다. Pyro를 비롯한 Tane등의 알고리즘의 구현과 의존 라이브러리들이 합쳐진 jar 파일이다. Metanome CLI jar file를 다운받는다. Metanome은 GUI가 포함된 데이터 분석 툴인 것 같다. 그걸 커맨드 라인에서 쉽게 실행할 […]

Spark Tips

1. Loop를 쓰는 순간 OutOfMemoryError DataFrame를 다루지 않는 순간 Spark cluster 중 Driver만 사용하게 된다. DataFrame을 안씀 (= 기껏 sqlContext.read로 읽어놓고 collect해서 사용함) -> 스파크가 아니라 스칼라에서 돌아감 (= Executor가 아니라 Driver에서 돌아감) -> Single node computing -> Out of Memory 2. UDF를 사용할 때 a) 파라미터에 Primitive Type을 넣지 않는 것을 추천 Scala기준으로 설명한다. […]

Spark Standalone Cluster with Docker Swarm

이번에 연구실에서 Apache Spark Cluster를 구축할 일이 있어서 구축 방법을 문서화했다. 이 포스트에서는 그 문서에 살점을 조금 더 붙여서 올려본다. 아울러 데이터가 최대한 내부망에서 처리되는 것을 원하시는 교수님 + 클라우드로 연구비를 사용하기 힘듦 등의 이유로 AWS를 사용할 수 없는 환경이라 직접 설치 / 설정했음을 밝혀둔다. Why Standalone? YARN, Mesos, Kubernetes와 같은 방법 대신에 왜 Docker […]

How to Launch / Terminate AWS EMR Cluster

(1) AWS 상단의 Services 탭 클릭 > EMR (Elastic MapReduce) 클릭   (2) 좌상단의 Create cluster를 클릭   (3) 이름과 Logging 유무, 원하는 버전 (본인은 최신 버전인 emr-5.10.0을 선택), 원하는 Application (본인은 Spark를 이용하기 위해 Spark를 선택) , 원하는 인스턴스 타입과 갯수, 자신이 사용하는 ECC pem key를 적절히 선택하고 우 하단에 Create cluster 클릭   […]

Convert Spark DataFrame to Map in Scala

테이블에서 각 나이별 Count를 구하는 상황이었다. val ageGroup = finalDf.groupBy(“나이”).count() 과 같이 각 나이가 몇 번 출현하는지 세는 것은 크게 문제가 없었지만, 사람이 어려봤자 0살, 늙어봤자 200살이니 굳이 이것을 데이터프레임으로 들고있기 보다는 Scala built-in Map으로 변환하고 싶었다. 하지만 ageGroup: org.apache.spark.sql.DataFrame = [나이: int, count: bigint]와 같이, 나이는 int, count는 bigint 타입으로 출력되어, 이것을 Seq로 만든뒤 List로 만드니 […]