https://www.coursera.org/learn/spark-hadoop-snowflake-data-engineering
snowflake: 저장. 연산 플랫폼 (clouds기반), Snowflake SQL 사용.
[bigdata 저장구조]:
1) Shared Everything(전통, simple 구조): non big data solution에 적합.
2) Shared Disk(개별 연산 ndoe, 같은 stroage): 같은 data의 다른 node이므로 동시 작업시 개별 공간의 연산 효율성↓인 단점 有
3) Shared Nothing(개별 연산node & 개별 stroage)
[Snowflake 저장 구조]: Hybrid approach(shared disk + shared nothing)
-> 전체 데이터는 공유(share) + 각 연산 node에 할당된 개별 저장 data 有
1. Cloud-Native Data Warehousing: 별도 인프라 없이 유연함과 확장가능한 플랫폼
2. Data Integration and ETL: integrate data 可 + data pipelines for ingestion, transformation, and loading 可
3. Data Security and Compliance: 암호화, 접근제한, 로그관리, masking을 통한 보
4. Scalability and Concurrency: 확장성 및 동시 진행
5. SQL-Based Querying and Performance Optimization: 기본 SQL 사용 可
[snowflake 30일 무료 체험 가입 후에 UI 탐색]
1. database: data가 저장되는 곳.
2. Admin - warehouse: 연산공간(쿼리 등)
3. 데이터 로드: local이든, cloud storage든, 아무곳 可
4. 쿼리데이터: 데이터 로드시, SQL쿼리 실행 可 (standard SQL syntax)
5. 그외: data sharing, data masking, automated query optimization, documentation 제공.
Data engineer로서 snowflake 학습도 중요함.
[Snowflake layers]
1.Cloud Services
다른 layer와 상호작용위한 layer.
보안, 승인, 권한이 관되는 곳.
쿼리 최적화 시행되는 곳. (모든 쿼리는 compute layer전에 먼저 여길 거침)
2.Compute - Virtual Warehouses
nodes는 Snowflake가 알아서 배정.
warehoueses(1. Standard warehouse 2. Snowpark warehouse)와 resources는 분리. 2번은 많은 메모리 필요한 일(ML)
수직, 수평적 scale 可
자동 stop, resume 기능 有
3. Database Storage (Snowflake가 전적으로 관리)
압축, 암호화되어 저장. Snowflake SQL로만 접근 可
실습
Worksheets에서 새로 만들고(SQL, python중 여기선 SQL)
database에서 sample data와 schemas를 지정해준다.
그리고 이렇게 쿼리를 지정해서 run(재생버튼)을 누르면
이렇게 Table 쿼리 조회결과와 함께, 오른쪽에 쿼리 조회 시간 및 조회된 표와 관련된 부가적인 자동 그래프들이 생성된다.
TABLE 생성, 지우기, 권한 변경 등 모든 SQL 작업이 가능하다.
warehouse 만들기와 설정은 이렇게 된다.
Admin - User에 가면
Roles라는 곳이 있다.
이렇게 새로 role과 권한을 만들 수 있다. API_ROLE을 USERADMIN으로 만들었더니 위의 Accountadmin을 상속받는 하나의 role 모양이 형성되었다.
Data - database에서 data를 만들고 table을 만들어보고 유저별 권한 설정을 해보자
여기서 database 임의로 만듬(TEST)
제약조건을 담는 schema 통(이름:= CDM)을 만든다
그리고 CDM에서 create - table - standard를 누르면
이렇게 java느낌(?)의 창이 나온다.
이렇게 표 이름, 컬럼 이름, 컬럼 타입(string 등)을 입력해주고 create Table을 누르면
이렇게 만들어지는데 DEMO_1을 누르면
이렇게 sql 쿼리로 정의된 table 정의서가 나온다.
권한도 현재 Accountadmin에만 되어있는데 옆의 버튼 (+ Privilege)를 누르면
이런식으로 새로만든 role인 API_ROLE에 권한을 부여할 수 있다.
권한은 여기서 눌러서 바꿀 수 있는데 API_ROLE로 들어가면
권한이 없으면 TEST라는 DB를 눌러도 아무것도 나오지 않는다.
따라서 TEST, CDM, Tables 3군데 모두에 각각 API_ROLE에 대해 권한을 부여해야한다.
권한 부여할 때 이렇게 grant option도 체크한다.
갱신을 위한 새로고침은 여기서 한다.
API_ROLE에서 안보이던 정보가 보이기 시작했다.
권한은 기본 ACCOUNT_ADMIN이 가지고 있던 것들을 기준으로 하나하나 추가한다.
쿼리 연산 공간인 warehouse에 만든 TEST도 권한을 부여해야 다른 유저가 쓸 수 있다. (제일 밑에 있다.)
똑같이 권한을 부여하자.
(!) Modify 권한 부여는 보통의 리소스 사용과정에서 매우 비싸므로 일반적으로 지양된다.
worksheet로 돌아가서 새 SQL sheet를 보면
TEST warehouse가 API_ROLE 유저도 접근이 가능하다.
db와 schemas도 선택해주고
만든 warehouse인 TEST 안에서 쿼리 연산 수행: Use warehouse TEST;
그리고 실행을 해주면("schema".표이름 형식의 출처)
내용이 없어서 결과물은 없지만 잘 실행이 된다.
Snowflake는 sql뿐만 아니라 python connetor로 python을 사용할 수 있다.
https://docs.snowflake.com/en/developer-guide/python-connector/python-connector-install
공식 문서에서 설치 연동법을 참조한다.
'TechStudy > BigDataTools' 카테고리의 다른 글
AWS: instance 만들기, PuTTY로 해당 가상환경 터미널 키기 (0) | 2024.01.18 |
---|---|
Spark and MLLIB (EDA와 머신러닝) (0) | 2023.12.04 |
Spark 실습(조작법, 쿼리, 시각화) (1) | 2023.12.04 |
Apache Spark (1) | 2023.11.30 |
Hadoop 기본 실행 (0) | 2023.11.20 |