Hadoop EcoSystem 24

[parquet-tools] parquet 파일 조회

parquet-tools parquet 파일은 csv나 json 마냥 메모장 같은 편집기로 열어도 그 내용이 제대로 보이지 않는다. 따라서 parquet 파일을 다룰 수 있는 별도의 유틸리티를 사용하게 되는데, 이 글에서는 여러 parquet 유틸리티 중 parquet 파일의 데이터와 메타데이터를 읽을 수 있는 도구인 parquet-tools를 사용하는 방법을 적어둔다. 참고로 Apache에서 공식적으로 제공하는 parquet-tools는 아니다! 간단히 pip로 설치할 수 있는 도구를 사용하려고 한다. 테스트할 parquet 파일은 https://www.nyc.gov/site/tlc/about/tlc-trip-record-data.page 에서 다운로드했다. 설치 parquet-tools는 pip로 설..

Hadoop EcoSystem 2024.03.12

Apache Parquet 이란 - 2

개요 2024.03.08 - Apache Parquet 이란 - 1에 이어서 parquet 파일에 대한 개념을 계속 정리한다. 메타데이터 parquet 파일에는 파일 메타데이터, 컬럼 메타데이터, 페이지 헤더 메타데이터가 존재한다. 데이터 타입 파일 포맷에서 지원하는 데이터 타입은 디스크에 미치는 영향을 최소화하도록 설계되었으며, 지원하고 있는 데이터 타입은 아래와 같다. BOOLEAN: 1 bit boolean INT32: 32 bit signed ints INT64: 64 bit signed ints INT96: 96 bit signed ints FLOAT: IEEE 32-bit floating point values DOUBLE: IEEE 64-bit floating point values BYTE..

Hadoop EcoSystem 2024.03.11

Apache Parquet 이란 - 1

개요 빅데이터 관련 프로젝트를 하다보면 json, csv 등 외의 parquet 형식의 파일을 다루게 되는데, 이번 글에서는 parquet 파일에 대해서 간단히 정리해두려고 한다. 참고로 parquet은 파케이라고 발음한다. Apache Parquet Apache Parquet이란 Hadoop 에코 시스템에서 공통적으로 사용할 수 있는 컬럼 기반 데이터 압축 형식을 말한다. 복잡하게 중첩된 데이터 구조를 위해 개발되었고, Dremel의 논문에서 작성된 record shredding and assembly algorithm을 사용한다. 또한 열(컬럼) 기반으로 데이터를 압축하여 효율적인 압축 및 인코딩을 지원한다. 관련 개념 Block (HDFS block) HDFS에서의 블록을 의미한다. File 파일의..

Hadoop EcoSystem 2024.03.08

[Hive] 테이블 - SerDe

개요 2024.01.18 - [Hive] 테이블 - 개념 및 유형에 이어서 이 글에서는 Hive가 데이터를 해석하는 방법을 제공하는 SerDe라는 개념에 대해 적어둔다. SerDe SerDe는 Serializer and Deserializer의 약어다. Hive는 FileFormat과 SerDe를 이용해 테이블 행을 읽고 쓴다. 파일을 읽을 때는 FileFormat을 이용한 후, Deserializer를 사용해 파일 데이터를 테이블 형식에 맞는 데이터로 변환한다. 반대로 파일을 쓸 때는 데이터를 Serializer를 이용해 key-value 형태로 변환한 후 FileFormat을 사용하여 파일로 저장한다. Hive 기본 SerDe Hive는 기본적으로 Avro, ORC, RegEx, Thrift, Par..

Hadoop EcoSystem 2024.02.16

[Hive] 테이블 - 스큐 (SKEW)

개요 2024.01.19 - [Hive] 테이블 - 파티션, 2024.02.02 - [Hive] 테이블 - 버켓팅 (bucketing)에 이어서 이번 글에서는 Hive 테이블의 스큐 (SKEW)에 대한 부분을 알아보려고 한다. 스큐 (SKEW) 스큐란 컬럼에 특정 데이터가 빈번하게 저장되는 경우 분리해서 저장하는 기능이다. 데이터를 디렉터리에 나눠서 저장하는 파티션과 비슷하지만, 파티션이 데이터를 크게 구분하는 용도로 사용한다면 스큐는 컬럼의 데이터를 구분할 때 사용한다. 스큐는 하나의 컬럼의 값이 특정 값에 몰려있을 때 유용하다. 예로 들어 num 컬럼에는 1부터 1000까지의 데이터가 저장되는데 주로 1, 2가 저장된다고 하자. 이 테이블을 파티셔닝하면 num=1, num=2, … , num=1000..

Hadoop EcoSystem 2024.02.07

[Hive] 테이블 - 버켓팅 (bucketing)

개요 2024.01.19 - [Hive] 테이블 - 파티션에 이어서 이번 글에서는 hive 성능에 관련이 있는 버켓팅 개념에 대해서 간단히 이해해보려고 한다. bucketing bucketing의 기본 아이디어는 특정 컬럼에 대한 HASH 값을 기준으로 파일을 나눠서 저장하는 것이다. 달리 표현하면, 특정 컬럼의 값을 해시 처리한 후 지정한 수의 파일로 분리해서 저장하는 것이다. bucketing을 사용하면 쿼리의 성능을 향상시킬 수 있다. 예로 들어 WHERE 조건에 버킷 컬럼을 사용하거나, 테이블 JOIN 시 bucket 기준 컬럼을 사용하면 해당 키의 해시값에 해당하는 버킷만 데이터를 스캐닝할 수 있기 때문이다. 테이블 버켓팅 설정 버켓팅은 테이블 생성 시 CLUSTERED BY ~ INTO n B..

Hadoop EcoSystem 2024.02.02

[Hive] 테이블 - 파티션

개요 2024.01.17 - [Hive] 데이터베이스, 2024.01.18 - [Hive] 테이블 - 개념 및 유형에 이어서 이번 글에서는 Hive 테이블의 파티션 개념에 대해 정리한다. 파티션 Hive는 디렉터리 단위로 데이터를 읽기 때문에 데이터가 많아질수록 속도가 느려진다. 이를 방지하기 위해 데이터를 하위 폴더로 분리해서 저장하는 파티션 개념을 사용한다. 테이블 생성 시 PARTITIOND BY절로 기준 컬럼 정보를 제공하면 디렉터리 단위로 데이터가 생성되며, 데이터 조회 시 WHERE 조건절에서 사용할 수 있다. 즉, SELECT 시 읽는 데이터의 양을 줄여서 처리 속도를 개선할 수 있다. 사용 예시) -- 날짜 기준 파티션 생성 CREATE TABLE tbl( col1 STRING ) PART..

Hadoop EcoSystem 2024.01.19

[Hive] 테이블 - 개념 및 유형

개요 2024.01.17 - [Hive] 데이터베이스에 이어 이번 글에서는 Hive 테이블 개념에 대해 정리한다. 테이블 Hive에서 테이블은 HDFS에 저장된 파일과 디렉터리 구조에 대한 메타 정보라고 할 수 있다. 실제 파일의 구조에 대한 정보와 저장 위치, 입력 형식, 출력 형식, 파티션 정보 등 여러 정보를 포함한다. 테이블은 CREATE 문으로 생성할 수 있다. CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (Note: TEMPORARY available in Hive 0.14.0 and later) [(col_name data_type [column_constraint_specification] [COMM..

Hadoop EcoSystem 2024.01.18

[Hive] 데이터베이스

개요 빅데이터 관련 프로젝트에 투입되어 있으면서 파티션이라는 개념을 듣게 되었는데, 관련하여 데이터베이스 개념부터 잡아야 할 것 같아 정리한다. 데이터베이스 Hive에서 데이터베이스는 테이블 이름을 구별하기 위한 네임스페이스 역할을 한다. 또한 테이블 데이터의 기본 저장 위치를 제공하는데, 만약 데이터베이스 생성 시 저장 위치를 지정하지 않으면 기본값으로 설정된다. # 데이터 웨어하우스 기본 위치 hive.metastore.warehouse.dir = /user/hive/warehouse # Hive 데이터베이스 기본 위치 /user/hive/.db # Hive 테이블 기본 위치 /user/hive/.db/ 데이터웨어하우스, 데이터베이스, 테이블의 기본 위치는 위와 같다. 데이터베이스 생성 Hive 데이..

Hadoop EcoSystem 2024.01.17

[PySpark] org.apache.spark.SparkException: Python worker failed to connect back.

현상 PySpark가 동작하는지 확인하고자 간단히 DataFrame을 생성하는 코드를 실행했다. from pyspark.sql import SparkSession if __name__ == '__main__': # SparkSession 초기화 spark = SparkSession.builder.appName("Simple Application").getOrCreate() # 데이터프레임 생성 data = [("James", "", "Smith", "1991-04-01", "M", 3000), ("Michael", "Rose", "", "2000-05-19", "M", 4000), ("Robert", "", "Williams", "1978-09-05", "M", 4000), ("Maria", "Anne"..

Hadoop EcoSystem 2023.12.01
1 2 3