본문 바로가기
반응형

Spark33

[We-Co] Spark Dataset,Dataframe을 이용한 단어 수 세기 예제 안녕하세요. 위기의코딩맨 입니다. 오늘은 Dataset과 dataframe을 이용하여 단어 수를 카운트하는 예제를 작성해보겠습니다. 우선 코드를 작성하기 전에 pom.xml 파일을 설정해주셔야 합니다. org.apache.spark spark-sql_2.11 2.3.0 이제 코드를 작성하는데 단계별로 나눠서 진행하겠습니다. 1. SaprkSession 생성 2. SparkSession으로부터 Dataset 또는 Dataframe 생성 3. 생성된 Dataset 또는 Dataframe을 통한 데이터 처리 4. SaprkSession 종료 [ SparkSession 생성 ] scala> import org.apache.spark.sql.SparkSession import org.apache.spark.sql.. 2021. 9. 6.
[We-Co] Spark Dataset 안녕하세요. 위기의코딩맨입니다. 오늘은 Spark에서 중요한 개념인 Dataset에 대해 간단하게 알아보도록 하겠습니다. [ DataSet ] Dataset 나오기 이전에 DataFrame이라는 클래스를 구현해서 언어와 상관 없이 사용하고 있었습니다. Dataset은 버전 Saprk 1.6에서 처음 소개되었으며, Java언어와 Scala언어에서만 사용이 가능했었습니다. 이때 버전에서는 Dataset이 DataFrame을 대체한다는 느낌이 없었기 때문에 두 가지 모두 사용했습니다. 그러나 Spark 2.0 버전부터 DataFrame 클래스가 Dataset 클래스로 통합되어 타입 별칭 기능을 가진 Scala 언어에서만 기존 방식 처럼 모두 사용가능 했지만 해당 기능이 없던 Java에서는 통합된 Dataset.. 2021. 9. 6.
[We-Co] Spark Accumulator 안녕하세요. 위기의 코딩맨입니다. 오늘은 Accumulator에 대해 간단하게 알아보도록 하겠습니다. 브로드캐스트 변수는 읽기 동작을 행하는 것이라면 Accumulator은 쓰기 동작을 위한것으로 생각하시면됩니다. 데이터 분석을 위해 미리 기록할 형식을 만들어 놓고 그 형식에 맞춰서 기록하고 분석하는 것입니다. Accumulator을 사용하시려면 org.apache.spark.util.AccumulatorV2를 생성하여 사용해야합니다. scala> import org.apache.spark.util.AccumulatorV2 import org.apache.spark.util.AccumulatorV2 scala> val acc1 =sc.longAccumulator("invalidFormat") acc1: .. 2021. 9. 3.
[We-Co] Spark RDD 출력 연산 (2) 안녕하세요. 위기의코딩맨입니다. 오늘은 RDD 출력연산 2번째 시간입니다!! Spark RDD 출력연산(1) [We-Co] Spark RDD 출력 연산 (1) 안녕하세요. 위기의코딩맨입니다. 오늘은 RDD의 출력 연산에 관해 알아보도록 하겠습니다. 관련 연산들이 많이 존재하여 첫번째와 두번째 나눠서 진행하도록 하겠습니다. [ first ] first는 말 그대 we-co.tistory.com 바로 시작해보겠습니다. [ aggregate() ] reduce()와 fold() 메서드는 입출력이 모두 같은 타입으로 진행해야한다는 제약조건이 있지만, aggregate()는 그러한 제약조건이 걸려있지않습니다. 간단하게 알아보면 총 3개의 인자를 사용합니다. 첫번째로는 fold()와 유사하게 초깃값을 지정해주고, .. 2021. 9. 2.
[We-Co] Spark RDD 출력 연산 (1) 안녕하세요. 위기의코딩맨입니다. 오늘은 RDD의 출력 연산에 관해 알아보도록 하겠습니다. 관련 연산들이 많이 존재하여 첫번째와 두번째 나눠서 진행하도록 하겠습니다. [ first ] first는 말 그대로 RDD의 첫번째 인자를 가져오는 역할을 합니다. 스파크 셸 작업에서 트랜스포메이션의 수행 결과 등을 빠르게 확인하는 역할로 활용할 수 있습니다. scala> val rdd = sc.parallelize(List(3, 5, 1)) scala> val result = rdd.first result: Int = 3 scala> print(result) 결과를 확인해보면 3이 출력되는 것을 확인할 수 있습니다. [ take() ] take()는 RDD의 첫번째 요소로부터 n개 까지의 요소를 반환하는 메서드입니.. 2021. 9. 2.
[We-Co] Spark RDD filter 및 정렬 연산 안녕하세요. 위기의 코딩맨입니다. 오늘은 RDD의 filter 및 정렬 연산에 대해 알아보도록 하겠습니다. [ filter() ] 용어 그대로 내가 원하는 요소를 뽑아내는 함수입니다 scala> val rdd = sc.parallelize(1 to 5) scala> val result = rdd.filter(_>2) scala> print(result.collect.mkString(", ")) 결과를 확인해보면 3, 4, 5 가 출력되는 것을 확인할 수 있습니다. 1~ 5까지 숫자를 RDD에 넣어주고 2보다 큰 수를 result에 넣어주도록 filter()의 조건을 설정해주면 결과 값이 출력 됩니다. [ sortByKey() ] sortByKey() 함수는 키 값을 기준으로 RDD의 요소들을 정렬하는 연.. 2021. 9. 1.
[We-Co] Spark RDD PIPE 및 파티션 연산 안녕하세요. 위기의 코딩맨입니다. 오늘은 Spark RDD PIP 및 파티션 연산에 대해 알아보도록 하겠습니다. [ pipe() ] 데이터를 처리할 때 외부 프로세스를 사용할 수 있습니다. val rdd = sc.parallelize(List("1,2,3","4,5,6","7,8,9")) val result = rdd.pipe("cut -f 1,3 -d,") print(result.collect.mkString(", ")) 결과는 1,3 4,6 7,9 의 결과를 얻을 수 있습니다. 해당 건은 3개 숫자의 문자열을 리눅스의 cut 유틸리티를 이용해 분리하고 1, 3번째 숫자를 가져오는 예제입니다. [ coalesce(), repartition() ] RDD를 생성하고, filter() 연산 등, 많은 트랜.. 2021. 8. 27.
[We-Co] Spark RDD 집계 연산 안녕하세요. 위기의코딩맨입니다. 오늘은 Spark RDD 집계와 관련된 연산들을 알아보도록 하겠습니다. [ reduceByKey() ] RDD의 구성이 키와 값으로 구성되어 있어야 사용가능합니다. 같은 키의 값들을 하나의 값으로 더해서 새로운 RDD를 생성하는 메서드입니다. val rdd = sc.parallelize(List("a","b","b")).map((_,1)) val result = rdd.reduceByKey(_ +_) print(result.collect.mkString(", ")) 결과 값은 (a,1), (b,2) 이유는 rdd의 인자 중 키 b가 2개 존재하며, 1의 인자를 갖고 있어 1+1 하여 b는 2의 출력 값을 얻게됩니다. [ foldBykey() ] RDD의 구성이 키와 값으로.. 2021. 8. 26.
[We-Co] Spark RDD의 집합 연산 안녕하세요. 위기의코딩맨입니다. 오늘은 Spark RDD 집합 연산을 알아보도록 하겠습니다. [ distinct() ] RDD의 중복된 요소들을 제외하여 새로운 RDD를 생성하는 메서드입니다. val rdd = sc.parallelize(List(1,2,3,1,2,3,1,2,3)) val result = rdd.distinct() print(result.collect.mkString(", ")) 결과는 1,2,3이 출력되는 것을 확인할 수 있습니다. [ cartesian() ] 2개의 RDD 요소를 카테시안곱을 진행하여 결과로 새로운 RDD를 생성하는 메서드입니다. val rdd = sc.parallelize(List(1,2,3)) val rdd2 = sc.parallelize(List("a","b",".. 2021. 8. 26.
반응형