본문 바로가기

빅데이터/spark38

[spark] RDD, DataFrame, DataSet 스파크의 RDD, DataFrame, DataSet의 차이에 대해서 RDD, DataFrame, DataSet RDD Spark 1.0에서 소개 Java, Scala의 객체를 처리 하는 방식으로 처리 가능 transformation 함수들을 제공하고 각 함수의 결과를 RDD로 생성 action 함수가 호출되어야 실제 동작 rdd.filter(.age >21).map(.last).saveAsObjectFile("result.txt") DataFrame Spark 1.3에서 프로젝트 텅스텐의 일부로 소개 데이터를 스키마 형태로 추상화 하여 처리 Catalyst 옵티마이저에 의해 효율적으로 처리 df.filter("age > 21") df.filter(df.col("age").gt(21)) DataSet 스파.. 2018. 3. 28.
[spark] RDD, Transformation, Action, Dependency 용어 RDD operationRDD를 제어하는 API operation은 크게 2개의 타입Transformation: RDD에서 새로운 RDD를 생성하는 함수Action: RDD에서 RDD가 아닌 타입의 data 로 변환하느 함수들 RDDMR의 단점복잡하고 Multi-Stage 한 처리가 느림interactive 하고 ad-hoc 한 쿼리 실행이 느림효율적인 데이터 공유 도구를 생성하기 위해 나옴MR은 중간 단계를 파일을 이용하기 때문에 IO 비용이 많이 들어감스파크는 하드디스크 대신 RAM을 이용하자 문제가 생기면 복구는 Lineage를 생성하여 새로 만들자 동작의 순서를 기록해 DAG로 표현한 것을 Lineage라고 함RAM을 Read-Only로 사용 Spark의 Operationtransformation.. 2018. 3. 28.
[spark] 스파크 디플로이 모드(deploy mode)의 cluster, client 의 차이 스파크의 클러스터 타입은 4가지가 있다. standalone스파크에 포함된 클러스터 관리자 YARNHadoop2의 관리자 https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.htmlMesosHadoop MapReduce와 다른 응용 서비스를 실행할 수 있는 범용 클러스터 관리자 http://mesos.apache.org/Kubernetes컨테이너화된 응용프로그램의 배치, 실행을 관리하는 클러스터 관리자 https://kubernetes.io/ 그리고 이 클러스터에 대한 배포 모드(deploy mode)는 2가지가 있다. client실행을 호출한 곳에서 드라이버가 생성cluster클러스터 내부에서 드라이버가 생성 https://.. 2018. 3. 27.
[spark] 스파크 컨테이너 메모리 오류시 처리 방안 스파크 실행중 메모리 부족으로 다음과 같은 오류가 발생하는 경우가 있다. Diagnostics: Container [pid=1,containerID=container_000001] is running beyond physical memory limits. Current usage: 1.4 GB of 1.4 GB physical memory used; 3.1 GB of 13.8 GB virtual memory used. Killing container. 이런 경우 다음과 같이 드라이버와 executor의 메모리 설정을 해주면 해결할 수 있다. spark.yarn.am.memory=3072Mspark.driver.memory=3072Mspark.executor.memory=4736Mspark.executor.. 2018. 2. 13.
[spark] NoSuchElement 오류 해결 방법 spark 처리중 다음과 같은 오류가 발생하는 경우가 있다. 아마도 shuffle 처리중 메모리가 부족해서 발생하는 것으로 추정된다. 이럴때는 spark.sql.shuffle.partitions 설정을 추가하면 된다. 다음 설정을 추가하여 처리하였다. spark.sql.shuffle.partitions=300spark.default.parallelism=300 diagnostics: User class threw exception: org.apache.spark.SparkException: Job aborted due to stage failure: Task 1 in stage 2.0 failed 4 times, most recent failure: Lost task 1.3 in stage 2.0 (TI.. 2018. 1. 8.
스파크에서 문자열 utf-8 형식으로 처리하기 pyspark에서 spakr 2.x 버전을 이용할 경우 utf-8 버전의 파일을 읽어서 처리할 경우 유니코드 오류가 발생한다. 이럴때 다음과 같이 처리하면 된다. ScalaContext를 이용하여 파일을 읽을 때 use_unicode 옵션을 이용하고, map 함수에서 라인단위로 읽을 때 인코딩을 처리해주면 된다. 2016. 6. 20.
[개념] 스톰 vs 스파크 - 2011년 트위터가 인수한 백타이프가 처음 시작한 프로젝트 - 트위터에서 오픈소스화 -> 아파치 프로젝트로 이동 - 클로저(Clojure)를 주언어로 사용 - 클로저에 기반을 두고 있지만 JVM에서 실행되며, 볼트는 다양한 언어로 개발이 가능 - 확장성이 크고, 내결함성이 강한, 스트림 프로세싱에 최적화된 이벤트 스트림 프로세싱 중심 - UC 버클리 산하 AMPLap에서 시작하여 아파치 프로젝트로 이동 - 범용 분산형 컴퓨팅 플랫폼 - 하둡을 기반으로 처리(불편하지만 하둡 없이도 가능함) - 스칼라, 파이썬을 이용한 인터랙티브 쉘 제공 - 확장성이 높은 실시간 분석과 BI 시스템을 위한 우수한 플랫폼 http://www.itworld.co.kr/news/91022 https://storm.apache.. 2015. 7. 21.
[spark] 아파치 스파크 아파치 스파크 실시간 분산형 컴퓨팅 프로젝트이다. 스트림 지향형 프로세스를 지원한다. 기존 하둡 클러스터에서 실행시킬 수 있다. 스칼라로 작성이 되어 있지만, 스칼라, 자바, 파이선 API를 지원한다. In-Memory 방식으로 처리를 하기 때문에 하둡에 비해 처리속도가 빠르다. 하둡에 비해 100배정도 빠르다고 한다. 예제 코드 # /spark/bin/pyspark 를 실행후 콘솔에서 입력 # README.md 파일은 hdfs 상에 업로드 되어 있어야 함 # hdfs://user/name/README.md 에 위치 # README.md 파일을 입력하여 라인 카운트 확인 lines = sc.textFile("README.md") print lines.count() # README.md 파일의 문장을 공백.. 2015. 6. 24.