데이터 엔지니어링
-
[Hive] Partition이란?(add 추가, drop 삭제, show partitions 조회, partitions)데이터 엔지니어링/Hive 2022. 10. 11. 20:19
Hive에서 사용하는 partition이란? table을 만들 partition을 이용하여 폴더 구조를 세분화 해서 관리 할 수 있다. 폴더를 구조적으로 나눠주기 때문에 데이터 관리 측면에서 효율적이다. 다만, 너무 많은 뎁스를 가지는 partition은 쿼리 나 성능면에서 악영향을 줄 수 있기 때문에 적당한 뎁스를 설정하는게 중요하다. Partition 테이블 생성 CREATE TABLE if not exsits default.person( col1 INT, col2 STRING, col3 INT, col4 STRING ) PARTITIONED BY(depth1 int, depth2 int, depth3 int) -- depth STORED AS ORC LOCATION 'hdfs://{hadoop_do..
-
[Hive]Create table Location 알아보기데이터 엔지니어링/Hive 2022. 10. 6. 21:55
Location이란? hive에서 create table을 하게 되면 default path안에 데이터가 파일 형태로 생성이 되게 된다. Location은 hive 속성 default path로 설정이 되지만, create table시 작성하여 명시적으로 path를 지정 해 줄 수 있다. hive안에 S3 plugin이 내장되어 있어 바로 S3주소로 접근이 바로 가능하다. # hdfs location 설정하는 법 CREATE TABLE default.person( pid INT, name STRING, age INT, address STRING ) STORED AS ORC LOCATION 'hdfs://{hdfs-domain}:{port}/{path}'; -- CREATE TABLE WITH LOCATI..
-
[Hive] Hive query - Bucketing table 알아보기데이터 엔지니어링/Hive 2022. 10. 6. 21:50
Bucketing이란? CREATE [EXTERNAL] TABLE [if not exsits] default.person( col1 STRING, col2 STRING, col3 STRING, col4 STRING ) CLUSTERD BY (col1) STORED BY ([col1, col2] [ASC | DESC]) into 256 BUCKETS STORED AS ORC; hive에서는 파일 단위로 데이터를 관리하는데 데이터들를 하나의 파일에 몰아서 관리하는 것이 아니라 여러개의 파일로 나눠서 데이터를 관리하는 것. Bucketing은 관리용이하게 하거나 성능 개선을 위해 사용한다. Clustered라는 속성에 column_name을 지정해 두면 이 column_name을 캐싱하여 Bucketing기준..
-
[Hive] Hive Query Table 관련 sql 정리(create, drop, truncate table) - options(if not exists, file format)데이터 엔지니어링/Hive 2022. 10. 6. 20:57
Managed or Internal table create table 시에 아무 옵션을 주지 않으면 기본적으로 internal 또는 managed table로 생성이 된다. internal table은 drop table을 하게 되면 안에 있는 데이터도 같이 삭제 된다. CREATE [INTERNAL or MANAGED] TABLE default.person( pid INT, name STRING, age INT, address STRING ); External table external table은 location에 설정된 파일이 삭제 되지 않는다. external을 설정하지 않으면 default로 internal or managed table로 설정 된다. CREATE EXTERNAL TABLE de..
-
[Hive] 테이블 생성(create table, view table, internal or external table 차이점, aws s3로 location 설정하는 법, 파일 포맷 설정하는 법)데이터 엔지니어링/Hive 2022. 9. 19. 20:56
기본 구조 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] [COMMENT col_comment], ... [constraint_specification])] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [A..
-
[Hive]HQL-데이터베이스 알아보기(DB 생성, 수정, 삭제 )데이터 엔지니어링/Hive 2022. 9. 18. 20:58
HIVE DB 하이브 데이터베이스는 스키마 정보를 덮어 씌워 Hive 쿼리를 사용 할 수 있도록 해줍니다. RDB의 데이터베이스와 같은 형태라 보면 됨. 실습 DB 생성 CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)]; 옵션 IF NOT EXISTS - 이 옵션을 붙여서 실행하면 DB가 없으면 생성, 있으면 생성되지 않음 comment - db description임 location - 데이터베이스의 위치를 지정 할 수 있습니다. 가장 기본 위치는 hdfs:///**use..
-
[Airflow] jinja_template을 활용한 날짜 동적 변수 활용 하는 법(동적 datetime, ds변수 UTC안되는 것 해결법)데이터 엔지니어링/AirFlow 2022. 9. 18. 18:15
안녕하세요 오늘은 회사에서 airflow를 사용하고 있는데 쿼리를 execution_date별로 날짜를 동적으로 설정 해야하는 상황이 발생하여 동적 date변수를 조작해 보는 airflow 코드를 만들어 볼 예정입니다. datetime 동적 변수 만드는데 삽질을 좀 많이해서 삽질 과정도 좀 같이 넣어 볼게요. 먼저, 동적 변수를 만드는 첫 번째 과정은 Jinja template을 이용하는 것입니다. Jinja template에 있는 동적 변수 이용하기 먼저 airflow는 python 코드로 되어있기 때문에 jinja template을 내장하고 있습니다. airflow에서는 Jinja_template에 미리 정의 되어있는 변수를 제공합니다. 홈페이지에 가보시면 자세히 나와있습니다. 사용법은 아래 코드를 ..
-
[HIVE]Hive란 2부 - 서비스들 설명데이터 엔지니어링/Hive 2022. 9. 18. 17:09
메타스토어 - 메타데이터(스키마) 저장하는 데이터베이스 Hadoop은 HDFS를 기반으로 동작한다, 즉 빅데이터용 저장소 라는 얘기다. Hive는 이를 SQL기반으로 편리하게 데이터 조작을 가능하게 해주는 툴이다. 하지만 SQL을 이용할려면 컬럼이나 스키마 같은 정보가 있어야한다. 그런데 SQL 을 날릴때마다 스키마 정보를 만들어서 사용하면 어떻게 할까 여간 불편한게 아니다. 그래서 스키마 정보를 저장해서 SQL을 날릴때 이 정보를 가지고 쿼리가 동작하게 되는데 이것이 메타스토어이다. 그래서 메타스토어는 DB로 만들어야 한다. 즉 메타스토어는 스키마 정보를 가지고 있는 데이터베이스이다. 아래 3가지 형태로 관리가 가능하다. 임베디드 별도의 데이터 베이스를 구성하지 않고 더비 DB를 이용 한번에 하나의 유..