Immersion In Data

분류 전체보기 196

[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

[Python] 11. BFS

1. BFS(Breadth-First Search) 너비 우선탐색이라고 부르며, 가까운 노드부터 탐색하는 알고리즘이다. 선입선출 방식인 큐 자료구조를 이용하고, 인접한 노드를 반복적으로 큐에 넣도록 알고리즘을 작성하면 자연스럽게 먼저 들어온 것이 먼저 나가게 되어, 가까운 노드부터 탐색을 진행하게 된다. BFS 동작 과정 탐색 시작 노드를 큐에 삽입하고 방문 처리를 한다. 큐에서 노드를 꺼내 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문 처리를 한다. 2번의 과정을 더 이상 수행할 수 없을 때까지 반복한다. cf) 방문처리 : 스택에 한 번 삽입되어 처리된 노드가 다시 삽입되지 않게 체크하는 것을 의미한다. 방문처리를 함으로써 각 노드를 한 번씩만 처리할 수 있다. 위 그래..

[Python] 10. DFS

1. DFS(Depth-First Search) 깊이 우선 탐색이라고 부르며, 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. 2. 그래프(Graph) 노드(Node)와 간선(Edge)으로 표현되며 이때 노드를 정점(Vertex)이라고도 말한다. 그래프 탐색이란 하나의 노드를 시작으로 다수의 노드를 방문하는 것을 말한다. 또한 두 노드간 간선으로 연결되어 있다면 '두 노드는 인접하다(Adjacent)'라고 표현한다. 인접 행렬(Adjacency Matrix) : 2차원 배열로 그래프의 연결 관계를 표현하는 방식 인접 리스트(Adjacency List) : 리스트로 그래프의 연결 관계를 표현하는 방식 인접 행렬(Adjacency Matrix) 2차원 배열에 각 노드가 연결된 형태를 기록하는 방식이..

[Python] 09. 스택, 큐, 재귀 함수

탐색 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 자료구조 데이터를 표현하고, 관리하고, 처리하기 위한 구조 스택(Stack)과 큐(Queue)를 구성하는 핵심 함수 삽입(Push) : 데이터를 삽입한다. 삭제(Pop) : 데이터를 삭제한다. 실제로는 스택(Stack)과 큐(Queue)를 사용할 때, 삽입과 삭제 외에도 오버플로와 언더플로를 고민해야 한다. 오버플로(Overflow) : 특정한 자료구조가 수용할 수 있는 데이터의 크기를 이미 가득 찬 상태에서 삽입 연산을 수행할 때 발생한다. 즉, 저장 공간을 벗어나 데이터가 넘쳐흐를 때 발생한다. 언더플로(Underflow) : 특정한 자료구조에 데이터가 전혀 들어 있지 않은 상태에서 삭제 연산을 수행해 데이터가 전혀 없는 상태이다. 1. 스택(..