[Spark/Hive] Spark에서 Hive 메타 스토어 사용하기
·
Minding's Programming/Spark
Spark의 DB와 테이블SparkSQL을 통해 임시 테이블을 만들어 SQL 조작이 가능하지만, Spark는 기본적으로 인메모리 기반이기 때문에, 세션이 종료되면 카탈로그라고 불리는 테이블과 뷰가 사라진다. 이 문제로 인해 Spark에서는 계속해서 사용해야 하는 테이블을 그때 그때 불러와줘야 하는 문제가 발생한다. Hive 메타스토어이를 해결하기 위해 Disk에 저장이 가능한 Hive와 호환이 되는 Persistent라는 카탈로그를 제공한다. 각 테이블들은 DB라고 부르는 폴더와 같은 구조로 관리된다. 위와 같이 스토리지 기반의 테이블은 기본적으로 HDFS오 Parquet 포맷을 사용하며, Hive와 호환되는 메타스토어를 사용한다. 여기엔 두 종류의 테이블이 존재한다.Managed Table: Spark..
[Spark/pySpark] SparkSQL UDF(User Define Function)
·
Minding's Programming/Spark
UDF?UDF(User Define Function)는 SQL(Spark에서는 DataFrame까지)에서 적용할 수 있는 사용자 정의 함수다. 일반적으로 SQL에서 Scalar함수(UPPER, LOWER 등), Aggregation함수(SUM, MIN, AVG 등)를 제공하고 있지만, 상황에 따라서 특정 계산식이 반복해서 필요할 때가 있다. 그럴 때 유용하게 사용할 수 있는 것이 UDF이다. pySpark에서 UDF를 사용해보기UDF는 크게 두 가지의 종류가 있다.Transformation 함수UDAF(User Define Aggregation Function): Aggregation 환경에서 사용하는 함수(Pyspark에서는 미지원)UDAF의 경우는 스칼라 또는 자바로 구현해야한다. 그렇다면, 다른 함..
[Spark] Spark의 개념, 구조, 프로그램 실행 옵션
·
Minding's Programming/Spark
Spark?Spark는 2013년에 출시된 Scala 기반의 빅데이터 처리 기술로, YARN 등을 분산환경으로 사용한다. 최근엔 MapReduce와 Hive 대신 Spark가 많이 선택받고 있다. Spark의 구성 (3.0 기준)Spark 3.0 기준 아래와 같은 라이브러리로 구성되어 있다.Spark Core: 각 App을 실행시키는 엔진 역할Spark SQL: SQL 등으로 DB, Dataframe 등을 조작할 수 있는 기능Spark ML: 머신러닝 기능을 사용할 수 있음Spark StreamingSpark GraphXSpark의 특징 (vs MapReduce)Spark는 메모리를 우선 사용하며, 메모리가 부족해지면 디스크를 사용한다.MapReduce의 경우 디스크를 사용해 Spark에 비해 속도가 느..
[Hadoop] MapReduce 프로그래밍이란?
·
Minding's Programming/Spark
MapReduce 프로그래밍의 특징MapReduce 프로그래밍은 기본적으로 빅 데이터 처리를 위해 만들어졌기 때문에, 일반 데이터 처리와는 다른 특징이 있다. 큰 특징은 아래와 같다.데이터 셋은 Key, Value의 집합이며 변경 불가(immutable) - 포맷은 하나로 고정데이터 조작은 map과 reduce 2개의 오퍼레이션으로만 가능이 2개의 오퍼레이션은 항상 하나의 쌍으로 연속 실행이 두 오퍼레이션 코드를 개발자가 채워야 함MapReduce 시스템이 Map의 결과를 Reduce단으로 모아줌위 단계를 셔플링이라고 부르며, Network단을 통한 데이터 이동이 발생Map의 결과 중 key가 같은 것을 모아주고 Reduce로 보냄 Map과 ReduceMap: (k, v) --> [(k', v')*]입력..
[Hadoop] 하둡의 분산처리 시스템, YARN 개념 정리
·
Minding's Programming/Spark
YARN은 Hadoop 2.0에서부터 지원되는 하둡의 Resourc Management Layer로, 세부 리소스 관리가 가능한 범용 컴퓨팅 프레임워크이다. HDFS 위에서 실행되며, YARN을 통해 Spark, MapReduce, Tez 등의 다양한 애플리케이션이 실행된다. YARN의 구조 YARN의 구조는 위 그림과 같다. 마스터 노드라고 할 수 있는 'Resource Manager'와 그 아래 슬레이브 노드인 'Node Manager'가 있다. 노드 매니저들은 리소스 매니저의 요구에 따라 자신이 가지고 있는 자원을 일부 넘겨주는 역할을 한다. 노드 매니저가 넘겨준다는 자원은 '컨테이너'라고 불린다. 컨테이너는 어떤 모듈을 실행시키는 구성 요소로, Java의 JVM과 비슷한 존재라고 생각할 수 있다...