DataBricks와 함께 시작하는 DataOps(1)
11186 단어 dbtDatabricks
블록dbt의 로컬 어댑터가 등장했습니다.
dbt의 국내 인지도는 아직 높지 않지만 DataOps의 핵심 구성 요소로서 개인이 기대하는 도구다.예를 들어dbt는 간단한 SQL과 YAML의 설정 파일을 통해 데이터 가공 절차의 기록, 데이터 모델의 문서의 생성, 단일 테스트와 다른 관점을 통해 데이터 품질을 자동으로 테스트하는 등 각종 기능을 실현할 수 있다.
그것은 어디가 편합니까?나는 이것이 전달하기 어려운 도구라고 생각하기 때문에 실제 행동을 하면서dbt의 장점을 음미하고 싶다.
이쪽 기사는 참고dbt Core integration with Databricks로 기재되어 있습니다.
컨디션
Windows 10 Enterprise (version: 1909)
Visual Studio Code (version: 1.62.3)
Python 3.8.8
DataOps란
가나사가 발표한 고속자전거 2018년판에 등장하면서 시작됐다고 한다.
DevOps 등 xOps 트렌드에서 생겨난 트렌드에 대해 "데이터와 관련된 부서 간 지식, 기술, 아이디어의 격차를 메우고 자동적으로 활용해 협력 체제를 구축하자"고 깨달았습니다.
특히 데이터 과학 데이터 엔지니어 데이터 소유자(비즈니스 분야 전문가 보유) 3명 간이다.
기술 요소는 다음과 같은 내용으로 구성된다.
- ETL/DWH
- 데이터 디렉토리
- 데이터 정의
- 데이터 품질 자동 테스트
- 데이터 품질 모니터링, 예외 감지
- 임무 공개/스케줄링
dbt 정보
dbt에는 오픈 소스 dbt Core와 클라우드 서비스 버전의 dbt Cloud이 있습니다.
dbt Core는 SQL과 YAML 파일로 구성된 dbt 프로젝트와 CLI 도구를 통해 Databricks, snowflake, bigquery 등 DWH를 조회해 표와 뷰를 작성한다.
dbt Cloud은 dbt Core 외에도 팀 개발에 웹 기반 IDE, 스케줄러, dbt 문서 공유 등의 기능을 제공한다.
검증 프로세스
작업 디렉토리 만들기
mkdir dbt_demo
cd dbt_demo
가상 환경 만들기나는 pyenv로 파이톤의 버전을 관리하고venv로 가상 환경을 관리한다.
pyenv local 3.8.8
python -m venv venv
.\venv\Scripts\activate
dbt 등 pip 설치python -m pip install --upgrade pip
pip install dbt-core dbt-databricks
설치된 프로그램 라이브러리를 확인합니다.pip list | findstr "dbt databricks"
databricks-sql-connector 0.9.3
dbt 0.21.1
dbt-bigquery 0.21.1
dbt-core 0.21.1
dbt-databricks 0.21.1
dbt-extractor 0.4.0
dbt-postgres 0.21.1
dbt-redshift 0.21.1
dbt-snowflake 0.21.1
dbt의 버전을 확인합니다.dbt --version
installed version: 1.0.0
latest version: 1.0.0
Up to date!
Plugins:
- databricks: 1.0.0
Databricks SQL 엔드포인트 작성dbt에서 연결된 Databricks SQL 엔드포인트 만들기(일반적인 Cluster도 가능)
SQL 엔드포인트의 경우 연결 정보가 Connection Details에 표시됩니다.
액세스 토큰이 필요하므로 Createa personal access token 링크 오른쪽 아래
미리 발행하다.
양식 준비
Databricks 노트북에서 먼저 다이몬즈 샘플 데이터에서 표를 작성합니다.
csv_file = '/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv'
df = (spark.read
.format('csv')
.option("header","true")
.option("inferSchema", "true")
.load(csv_file)
)
df.write.saveAsTable("diamonds")
diamonds의 책상은 이렇습니다.display(df)
2.dbt 프로젝트 제작
프로젝트는 dbt 관리 단위로 SQL 및 YAML 파일로 구성됩니다.
dbt init
명령을 실행하면 프로젝트를 서로 만들 수 있습니다.일반적으로 디렉터리 구조는 다음과 같다.
├─ dbt_project.yml
├─ README.md
├─ analyses
├─ data
├─ dbt_packages
├─ logs
├─ macros
├─ models
├─ snapshots
└─ tests
DWH 등과의 연결 정보는 위의 디렉토리 및 파일 외에도 ~/.dbt/profiles.yml
에 기록됩니다.profile.yml의 구조는 다음과 같다.~/.dbt/profiles.yml
databricks_cluster:
outputs:
dev:
host: xxxxx.cloud.databricks.com
http_path: /sql/1.0/endpoints/8888
schema: default
threads: 1
token: dapiXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
type: databricks
target: dev
dbt init
SQL 엔드포인트에 대한 연결 정보 및 액세스 토큰을 입력하는 명령을 실행합니다.dbt init demo_project
00:00:00 Running with dbt=1.0.0
00:00:00 Creating dbt configuration folder at ~\.dbt
00:00:00 Setting up your profile.
Which database would you like to use?
[1] databricks
(Don't see the one you want? https://docs.getdbt.com/docs/available-adapters)
Enter a number: 1
host (yourorg.databricks.com): xxxxx.cloud.databricks.com
http_path (HTTP Path): /sql/1.0/endpoints/8888
token (dapiXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX):
schema (default schema that dbt will build objects in): default
threads (1 or more) [1]: 1
00:00:00 Profile databricks_cluster written to ~\.dbt\profiles.yml using target's profile_template.yml and your supplied values. Run 'dbt debug' to validate the connection.
dbt에서 Databricks로의 SQL 엔드포인트 연결을 테스트합니다.cd demo_project
dbt debug
00:00:00 Running with dbt=1.0.0
dbt version: 1.0.0
python version: 3.8.8
python path: ...\venv\scripts\python.exe
os info: Windows-10-10.0.xx
Using profiles.yml file at ~\.dbt\profiles.yml
Using dbt_project.yml file at \dbt_demo\demo_project\dbt_project.yml
Configuration:
profiles.yml file [OK found and valid]
dbt_project.yml file [OK found and valid]
Required dependencies:
- git [OK found]
Connection:
host: xxxxx.cloud.databricks.com
http_path: /sql/1.0/endpoints/8888
schema: default
Connection test: [OK connection ok]
All checks passed!
3.dbt의 모형 제작 및 집행dbt의 모델은 dbt의 간을 처리하는 데이터 모델의 개념이지만 그 실체는 SELECT 문일 뿐이고 모델 디렉터리에서 SQL 파일로 설정됩니다.
모델 자체는 SELECT 문서이지만 dbtprojet.yml 또는 모델 SQL 파일
config
의 블록에서 기술 모델 설정을 통해 dbt run
명령은 각 환경에 따라 보기와 표를 작성하고 모델 간의 의존 관계를 기록하며 유연하게 처리할 수 있다.공식 문서:dbt Models
이번에는 SQL 파일
config
에 블록을 기술합니다.dbt_demo/demo_project/models/diamonds_four_cs.sql
{{ config(
materialized='table',
file_format='delta'
) }}
select carat, cut, color, clarity
from diamonds
dbt_demo/demo_project/models/diamonds_list_colors.sqlselect distinct color
from {{ ref('diamonds_four_cs') }}
sort by color asc
dbt_demo/demo_project/models/diamonds_price.sqlselect color, avg(price) as price
from dbt_schema.diamonds
group by color
order by price desc
모델(SQL 파일)을 만든 후 dbt run
명령을 사용합니다.dbt run --model models/diamonds_four_cs.sql models/diamonds_list_colors.sql models/diamonds_prices.sql
00:00:00 Running with dbt=1.0.0
00:00:00 Found 5 models, 4 tests, 0 snapshots, 0 analyses, 190 macros, 0 operations, 0 seed files, 0 sources, 0 exposures, 0 metrics
00:00:00
00:00:00 Concurrency: 1 threads (target='dev')
00:00:00
00:00:00 1 of 3 START table model diamonds_four_cs............................ [RUN]
00:00:00 1 of 3 OK created table model diamonds_four_cs....................... [OK in 4.03s]
00:00:00 2 of 3 START view model diamonds_prices.............................. [RUN]
00:00:00 2 of 3 OK created view model diamonds_prices......................... [OK in 1.05s]
00:00:00 3 of 3 START view model diamonds_list_colors......................... [RUN]
00:00:00 3 of 3 OK created view model diamonds_list_colors.................... [OK in 1.37s]
00:00:00
00:00:00 Finished running 1 table model, 2 view models in 10.51s.
00:00:00
00:00:00 Completed successfully
00:00:00
00:00:00 Done. PASS=3 WARN=0 ERROR=0 SKIP=0 TOTAL=3
위와 같이 dbt에서 Databricks에 표와 보기를 만들 수 있습니다.dbt with Databrics로 시작하는 DataOps(2)에서 우리는 데이터 품질 테스트의 기능을 더욱 시도할 것이다.
Reference
이 문제에 관하여(DataBricks와 함께 시작하는 DataOps(1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/iizukak09/items/a5ae80ee9ffa63d36c84텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)