Data Engineering
-
Spark + Iceberg - 2(Partition, Schema evolution)Data Engineering 2024. 1. 16. 22:27
소개 아이스버그 기능 Partition,Schema Evolution에 대해서 살펴보자. 기존 하이브 테이블은 파티셔닝을 변경할 수 없다. 그래서 일별 단위에서 시간별 단위로 변경하려면 새로운 테이블을 만들어야한다. 쿼리도 재작성해야하므로 불편함이 존재한다. 이것을 해결하기 위해서 아이스버그는 Partitioning Evolution을 제공한다. 그리고 Schema에 대한 Evolution을 관리할 수 있다. 아래 예시는 Schema Evolution이 적용되는 예시이다. 1. 테이블에 새로운 컬럼을 추가하는 경우 2. 테이블에 존재하는 컬럼을 삭제하는 경우 3. 컬럼명을 새로 변경했을 경우 4. 컬럼 타입을 변경했을 경우 5. 테이블 컬럼 순서를 변경했을 경우 위 변경들은 메타 데이터 변경이므로 데이터..
-
Spark + Iceberg - 1(소개 및 연동)Data Engineering 2024. 1. 16. 20:25
소개 일반적으로 데이터 플랫폼에서는 HDFS, S3(데이터 저장) + Hive Metastore(메타데이터 저장) + Spark, Trino, Hive(쿼리 엔진) 조합하여 사용한다. 그러나 문제점이 있다. 여러 사용자가 HMS를 공유하기 때문에 OOM이 발생할 확률이 크다. 그래서 이것을 분리하기 위해서 Iceberg를 사용한다. 예를 들어서 사용자1이 TABLE_A에 접근하려고하고 사용자2가 TABLE_B에 접근하려고 하면 하나의 인스턴스를 공유하고 있는 예전과 달리 Iceberg는 각 Table마다 File로 저장하여 관리하기 때문에 서로 영향이 가지않는다. 또한 Hive에 대한 의존성이 없어진다. S3 + Spark만 있으면 실행이 가능하다는 장점이 있다. 결국 트랜잭션을 가진 Datalakeho..
-
SparkSQL CLI 대신 Spark Thrift ServerData Engineering 2024. 1. 15. 19:54
기본적으로 SparkSQL을 CLI(${SPARK_HOME}/bin/spark-sql)로 실행해왔다. 다른 방법으로 Thrift Server를 이용하여 JDBC/ODBC 접근이 가능하다. 사용이유 1. JDBC/ODBC사용하여 SparkSQL 사용가능. 2. DB 분석 툴이나 IDE 연계하여 사용가능함. 3. 동시에 여러 유저들이 사용가능함. 실행 기본 HMS가 RDB에 설정되어있어야한다. HMS 서버는 안 띄우더라도 HMS가 사용하던 DB가 있어야한다. 참고: https://hoony-612.tistory.com/82 1. 실행 //Default: jdbc:hive2://localhost:10000 ${SPARK_HOME}/sbin/start-thriftserver.sh //jdbc:hive2://..
-
Spark + S3 연동하기Data Engineering 2024. 1. 15. 16:12
이전 글에서는 SparkSQL로 LocalFileSystem에 Data를 기록하고 Hive Metastore에 Metadata를 기록하였다. 이번에는 LocalFileSystem 대신에 AWS S3 FileSystem을 사용하여 Spark 및 SparkSQL을 사용해보자. S3는 만들어져 있고 Access Key, Private Key 발급받는 과정은 생략한다. Spark Configuration 설정하기 1. AWS 사용을 위한 Jar 다운로드 및 ${SPARK_HOME}/jars 에 넣기 Spark와 아래 Jar버전이 안맞는 경우는 런타임 시 에러가 발생할 수 있으므로 확인하고 다운로드하자. * spark: 3.5.0 * aws-java-sdk-bundle-1.12.262.jar * hadoop-a..