Immersion In Data

전체 글 199

[Snowflake] Snowpipe

1. What is Snowpipe 버킷에 파일이 나타나면 자동으로 데이터 로드를 활성화 분석에 데이터를 즉시 사용하는 경우 적용 웨어하우스 대신 서버리스를 사용 2. High-level steps 스테이지 생성 - COPY COMMAND 테스트 - 파이프 생성 - S3 알림 3. Creating stage 테이블 생성 CREATE OR REPLACE TABLE OUR_FIRST_DB.PUBLIC.employees ( id INT, first_name STRING, last_name STRING, email STRING, location STRING, department STRING ); file format 생성(null값 처리) CREATE OR REPLACE file format MANAGE_DB...

[Snowflake] Loading from AWS

1. Creating S3 bucket 버킷 이름 설정 : 버킷 이름은 전역에서 고유해야 함 AWS 리전 : Snowflake에서 선택한 동일한 리전을 선택함(동일한 리전끼리는 데이터 전송 비용이 무료임) 버킷 생성 확인 버킷안에 폴더 생성 2. Upload files in S3 csv 폴더 클릭 업로드 버튼 클릭 파일 추가 버튼 클릭 csv 파일 업로드 csv파일을 업로드 한 절차와 동일하게 json파일을 json 폴더에 업로드 3. Creating policy IAM 서비스 접속 새로운 역할(role) 생성 신뢰할 수 있는 엔터티 선택 AWS 계정 옵션에 외부 ID 필요 선택(더미로 '00000' 적용) 권한 추가(S3 Full Access) 버킷 생성 확인 ExternalID 수정 4. Creati..

[Snowflake] Performance optimization

1. Performance in Snowflake 목적 : 쿼리 성능 최적화, 비용 절감 Snowflake에서 성능을 최적화하는 방법 : 마이크로 파티션을 자동적으로 관리 특정 사용자 그룹을 위한 전용 웨어하우스 생성 : 서로 다른 워크로드에 따라 분리 Scaling Up : 이미 알고있는 패턴의 많은 워크로드를 위한 작업 Scaling Out : 워크로드의 패턴을 알 수 없는 상태인 동적 작업 최대 캐시 사용 : 자동 캐싱 최대화 클러스터 키 : 사이즈가 큰 테이블을 위한 작업 cf) 전통적인 성능 최적화 방법 인덱스, PK 추가 테이블 파티션 생성 쿼리 실행 테이블 계획 분석 불필요한 전체 테이블 스캔 제거 2. Create dedicated virtual warehouse 사용자 그룹 또는 워크로드..

[Snowflake] Loading unstructured data

1. Loading unstrunctured data 스테이지 생성 raw data 로드 분석 & 파싱 평면화 & 로드 2. Creating stage & raw file 스테이지 생성 CREATE OR REPLACE stage MANAGE_DB.EXTERNAL_STAGES.JSONSTAGE url='s3://bucketsnowflake-jsondemo'; 스테이지 확인 LIST @MANAGE_DB.EXTERNAL_STAGES.JSONSTAGE; file format 생성 CREATE OR REPLACE file format MANAGE_DB.FILE_FORMATS.JSONFORMAT TYPE = JSON; variant 옵션을 사용하여 테이블 생성 CREATE OR REPLACE table OUR_FI..

[Snowflake] Copy options

1. VALIDATION_MODE RETURN_n_ROWS : 지정된 행 수를 확인하고 반환한다. 처음 발생한 오류에서 실패한다. RETURN_ERRORS : Copy Command의 모든 오류를 반환한다. 새로운 database 생성 CREATE OR REPLACE DATABASE COPY_DB; 테이블 생성 CREATE OR REPLACE TABLE COPY_DB.PUBLIC.ORDERS ( ORDER_ID VARCHAR(30), AMOUNT VARCHAR(30), PROFIT INT, QUANTITY INT, CATEGORY VARCHAR(30), SUBCATEGORY VARCHAR(30)); example 1 : 에러가 없는 경우 스테이지 생성 CREATE OR REPLACE STAGE COPY_..

[Snowflake] Loading data

1. Bulk loading 가장 빈번한 방법 웨어하우스를 사용 스테이지에서 로드 명령을 복사(Copy Command) 변환 가능 2. Continuous loading 소량의 데이터를 로드하도록 설계됨 스테이지에서 추가되면 자동으로 실행 분석을 위해 결과를 늦춤 Snowpipe 이용(서버리스 기능) 3. 스테이지 데이터를 로드할 수 있는 위치를 포함하는 데이터베이스 개체 4. 외부 스테이지(External Stage) S3 Google Cloud Platform Microsoft Azure 스키마에서 데이터베이스가 생성됨 CREATE STAGE 명령을 사용하여 스테이지를 생성함 5. 내부 스테이지(Internal Stage) 로컬 스토리지는 Snowflake에 의해 유지됨 6. 데이터 로드 순서(Bul..

[Snowflake] Snowflake Architecture

1. Data warehouse 서로 다른 형식의 데이터들(database, csv, parquet..)을 ETL(Extract, Transform, Load) 과정을 통해 생성하는 하나의 공간 목적 : 서로 다른 데이터 소스를 보고와 분석을 위해 통합하여 사용하기 위해 Raw data(Staging area) → Data integration(Data Transformation) → Access layer 2. Cloud Computing Cloud 공급자인 AWS, Azure, GCP가 제공하는 물리적 서버들과 가상 머신, 물리적 스토리지를 이용하고, 데이터 스토리와 가상 웨어하우스, 메타데이터 관리를 SaaS(Software-as-a-Service)형태로 제공한다. 따라서 SaaS형태로 제공하는 기..

Hadoop 설치

1. ubuntu에 open-jdk 설치 1) 패키지 갱신 sudo apt update 2) open jdk 설치 sudo apt install openjdk-8-jdk -y 2. hadoop용 계정 생성 1) localhost와 ssh통신을 위한 openssh-server open-client 설치 sudo apt install openssh-server openssh-client -y 2) 계정 추가 및 비밀번호 설정 sudo adduser hdoop 3) hdoop 계정으로 접속 su - hdoop 4) hadoop 유저를 위한 비밀번호 없는 ssh통신 가능하게 하기 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/a..

Hadoop 2022.12.06

백준 1260번 : DFS와 BFS

https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net from collections import deque n, m, v = map(int, input().split()) graph = [[False] * (n + 1) for _ in range(n + 1)] for i in range(m): a, b = map(int, input().split()) graph[a][b] = True graph[b][a] = T..

Python/Baekjoon 2022.12.06

백준 2178번 : 미로 탐색

https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net from collections import deque n, m = map(int, input().split()) # 2차원 리스트의 맵 정보 입력받기 graph = [] for i in range(n): graph.append(list(map(int, input()))) # 이동할 네 방향 정의(상, 하, 좌, 우) dx = [0, 0, -1, 1] dy = [1, -1, 0, 0] def bfs(x,y): # 큐(Queue) ..

Python/Baekjoon 2022.11.28