Dataflow ๊ด๋ฆฌํ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ํ์ดํ๋ผ์ธ์ ์คํํ๋ ๊ฒฝ์ฐ Dataflow ๋ช ๋ น์ค ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ Dataflow ์์ ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. Dataflow ๋ช ๋ น์ค ์ธํฐํ์ด์ค๋ Google Cloud CLI์ ๋ช ๋ น์ค ๋๊ตฌ์ ํฌํจ๋ฉ๋๋ค.
Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ Dataflow ์์ ์ ๋ณด๊ณ ์ํธ์์ฉํ๋ ค๋ฉด Dataflow ๋ชจ๋ํฐ๋ง ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Dataflow ๋ช ๋ น์ค ๊ตฌ์ฑ์์ ์ค์น
๋ก์ปฌ ํฐ๋ฏธ๋์์ Dataflow ๋ช ๋ น์ค ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Google Cloud CLI๋ฅผ ์ค์นํ๊ณ ๊ตฌ์ฑํฉ๋๋ค.
Cloud Shell์ ๊ฒฝ์ฐ Dataflow ๋ช ๋ น์ค ์ธํฐํ์ด์ค๋ ์๋์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
๋ช ๋ น์ด ์คํ
์ฌ์ฉ ๊ฐ๋ฅํ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ Dataflow ๋ช ๋ น์ค ์ธํฐํ์ด์ค์ ์ํธ์์ฉํฉ๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ Dataflow ๋ช ๋ น์ด ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด ์ ธ ๋๋ ํฐ๋ฏธ๋์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํฉ๋๋ค.
gcloud dataflow --help
์ถ๋ ฅ์์ ๋ณผ ์ ์๋ฏ์ด Dataflow ๋ช
๋ น์ด์๋ flex-template
, jobs
, snapshots
sql
๋ฑ ๊ทธ๋ฃน 4๊ฐ๊ฐ ์์ต๋๋ค.
Flex ํ ํ๋ฆฟ ๋ช ๋ น์ด
flex-template
ํ์ ๋ช
๋ น์ด ๊ทธ๋ฃน์ ์ฌ์ฉ ์ค์ ํ๋ฉด Dataflow Flex ํ
ํ๋ฆฟ์ผ๋ก ์์
ํ ์ ์์ต๋๋ค. ์ง์๋๋ ์์
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
build
: ์ง์ ๋ ๋งค๊ฐ๋ณ์์์ Flex ํ ํ๋ฆฟ ํ์ผ์ ๋น๋ํฉ๋๋ค.run
: ์ง์ ๋ ๊ฒฝ๋ก์์ ์์ ์ ์คํํฉ๋๋ค.
ํ
ํ๋ฆฟ์ ์คํํ๋ ค๋ฉด Cloud Storage ๋ฒํท์ ์ ์ฅ๋๋ ํ
ํ๋ฆฟ ์ฌ์ ํ์ผ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ํ
ํ๋ฆฟ ์ฌ์ ํ์ผ์๋ SDK ์ ๋ณด ๋ฐ ๋ฉํ๋ฐ์ดํฐ์ ๊ฐ์ด ์์
์ ์คํํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค. ๋ํ metadata.json
ํ์ผ์๋ ์ด๋ฆ, ์ค๋ช
, ์
๋ ฅ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ํ
ํ๋ฆฟ์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค. ํ
ํ๋ฆฟ ์ฌ์ ํ์ผ์ ๋ง๋ ํ Java ๋๋ Python ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ Flex ํ
ํ๋ฆฟ์ ๋น๋ํ ์ ์์ต๋๋ค.
Google Cloud CLI๋ฅผ ์ฌ์ฉํ์ฌ Flex ํ ํ๋ฆฟ ๋ง๋ค๊ธฐ ๋ฐ ์คํ์ ๋ํ ์์ธํ ๋ด์ฉ์ Flex ํ ํ๋ฆฟ ๋น๋ ๋ฐ ์คํ ํํ ๋ฆฌ์ผ์ ์ฐธ์กฐํ์ธ์.
Jobs ๋ช ๋ น์ด
jobs
ํ์ ๋ช
๋ น์ด ๊ทธ๋ฃน์ ์ฌ์ฉํ๋ฉด ํ๋ก์ ํธ์์ Dataflow ์์
์ ์ํํ ์ ์์ต๋๋ค. ์ง์๋๋ ์์
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
cancel
: ๋ช ๋ น์ค ์ธ์์ ์ผ์นํ๋ ๋ชจ๋ ์์ ์ ์ทจ์ํฉ๋๋ค.describe
: Get API์์ ๊ฐ์ ธ์จ ์์ ๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํฉ๋๋ค.drain
: ๋ช ๋ น์ค ์ธ์์ ์ผ์นํ๋ ๋ชจ๋ ์์ ์ ๋๋ ์ด๋ํฉ๋๋ค.list
: ํน์ ํ๋ก์ ํธ์ ๋ชจ๋ ์์ ์ ๋์ดํ๋ฉฐ ์ ํ์ ์ผ๋ก ๋ฆฌ์ ๋ณ๋ก ํํฐ๋ง๋ฉ๋๋ค.run
: ์ง์ ๋ ๊ฒฝ๋ก์์ ์์ ์ ์คํํฉ๋๋ค.show
: ์ง์ ๋ ์์ ์ ๋ํ ๊ฐ๋จํ ์ค๋ช ์ ํ์ํฉ๋๋ค.
ํ๋ก์ ํธ์ ๋ชจ๋ Dataflow ์์ ๋ชฉ๋ก์ ๊ฐ์ ธ์ค๋ ค๋ฉด ์ ธ ๋๋ ํฐ๋ฏธ๋์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud dataflow jobs list
์ด ๋ช ๋ น์ด๋ ํ์ฌ ์์ ๋ชฉ๋ก์ ๋ฐํํฉ๋๋ค. ๋ค์์ ์ํ ์ถ๋ ฅ์ ๋๋ค.
ID NAME TYPE CREATION_TIME STATE REGION 2015-06-03_16_39_22-4020553808241078833 wordcount-janedoe-0603233849 Batch 2015-06-03 16:39:22 Done us-central1 2015-06-03_16_38_28-4363652261786938862 wordcount-johndoe-0603233820 Batch 2015-06-03 16:38:28 Done us-central1 2015-05-21_16_24_11-17823098268333533078 bigquerytornadoes-johndoe-0521232402 Batch 2015-05-21 16:24:11 Done europe-west1 2015-05-21_13_38_06-16409850040969261121 bigquerytornadoes-johndoe-0521203801 Batch 2015-05-21 13:38:06 Done us-central1 2015-05-21_13_17_18-18349574013243942260 bigquerytornadoes-johndoe-0521201710 Batch 2015-05-21 13:17:18 Done europe-west1 2015-05-21_12_49_37-9791290545307959963 wordcount-johndoe-0521194928 Batch 2015-05-21 12:49:37 Done us-central1 2015-05-20_15_54_51-15905022415025455887 wordcount-johndoe-0520225444 Batch 2015-05-20 15:54:51 Failed us-central1 2015-05-20_15_47_02-14774624590029708464 wordcount-johndoe-0520224637 Batch 2015-05-20 15:47:02 Done us-central1
๊ฐ ์์
์ ๋ํด ํ์๋๋ ์์
ID
๋ฅผ ์ฌ์ฉํ์ฌ describe
๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ์์
์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ํ์ํ ์ ์์ต๋๋ค.
gcloud dataflow jobs describe JOB_ID
JOB_ID๋ฅผ ํ๋ก์ ํธ์ Dataflow ์์
์ค ํ๋์ ์์
ID
๋ก ๋ฐ๊ฟ๋๋ค.
์๋ฅผ ๋ค์ด ์์
ID 2015-02-09_11_39_40-15635991037808002875
์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ์ํ ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
createTime: '2015-02-09T19:39:41.140Z' currentState: JOB_STATE_DONE currentStateTime: '2015-02-09T19:56:39.510Z' id: 2015-02-09_11_39_40-15635991037808002875 name: tfidf-bchambers-0209193926 projectId: google.com:clouddfe type: JOB_TYPE_BATCH
๊ฒฐ๊ณผ๋ฅผ JSON ํ์์ผ๋ก ์ง์ ํ๋ ค๋ฉด --format=json
์ต์
์ ์ฌ์ฉํ์ฌ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud --format=json dataflow jobs describe JOB_ID
JOB_ID๋ฅผ ํ๋ก์ ํธ์ Dataflow ์์
์ค ํ๋์ ์์
ID
๋ก ๋ฐ๊ฟ๋๋ค.
๋ค์ ์ํ ์ถ๋ ฅ์ JSON์ผ๋ก ํ์ ์ง์ ๋ฉ๋๋ค.
{ "createTime": "2015-02-09T19:39:41.140Z", "currentState": "JOB_STATE_DONE", "currentStateTime": "2015-02-09T19:56:39.510Z", "id": "2015-02-09_11_39_40-15635991037808002875", "name": "tfidf-bchambers-0209193926", "projectId": "google.com:clouddfe", "type": "JOB_TYPE_BATCH" }
์ค๋ ์ท ๋ช ๋ น์ด
snapshots
ํ์ ๋ช
๋ น์ด ๊ทธ๋ฃน์ ์ฌ์ฉ ์ค์ ํ๋ฉด Dataflow ์ค๋
์ท์ผ๋ก ์์
ํ ์ ์์ต๋๋ค. ์ง์๋๋ ์์
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
create
: Dataflow ์์ ์ ์ค๋ ์ท์ ๋ง๋ญ๋๋ค.delete
: Dataflow ์ค๋ ์ท์ ์ญ์ ํฉ๋๋ค.describe
: Dataflow ์ค๋ ์ท์ ์ค๋ช ํฉ๋๋ค.list
: ์ ํ์ ์ผ๋ก ์์ ID๋ก ํํฐ๋ง๋ ์ง์ ๋ ๋ฆฌ์ ์ ํ๋ก์ ํธ์ ์๋ ๋ชจ๋ Dataflow ์ค๋ ์ท์ ๋์ดํฉ๋๋ค.
Dataflow์์ ์ค๋ ์ท ์ฌ์ฉ์ ๋ํ ์์ธํ ๋ด์ฉ์ Dataflow ์ค๋ ์ท ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
SQL ๋ช ๋ น์ด
sql
ํ์ ๋ช
๋ น์ด ๊ทธ๋ฃน์ ์ฌ์ฉ ์ค์ ํ๋ฉด Dataflow SQL๋ก ์์
ํ ์ ์์ต๋๋ค. gcloud Dataflow sql query
๋ช
๋ น์ด๋ Dataflow์์ ์ฌ์ฉ์ ์ง์ SQL ์ฟผ๋ฆฌ๋ฅผ ์๋ฝํ๊ณ ์คํํฉ๋๋ค.
์๋ฅผ ๋ค์ด BigQuery ๋ฐ์ดํฐ ์ธํธ์์ ์ฝ๊ณ ๋ค๋ฅธ BigQuery ๋ฐ์ดํฐ ์ธํธ์ ์ฐ๋ Dataflow ์์ ์์ ๊ฐ๋จํ SQL ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ค๋ฉด ์ ธ ๋๋ ํฐ๋ฏธ๋์์ ๋ค์์ ์คํํฉ๋๋ค.
gcloud dataflow sql query 'SELECT word FROM bigquery.table.PROJECT_ID.input_dataset.input_table where count > 3' --job-name=JOB_NAME \ --region=us-west1 \ --bigquery-dataset=OUTPUT_DATASET \ --bigquery-table=OUTPUT_TABLE
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ํ๋ก์ ํธ์ ์ ์ญ์ ์ผ๋ก ๊ณ ์ ํ ์ด๋ฆ
- JOB_NAME: Dataflow ์์ ์ด๋ฆ
- OUTPUT_DATASET: ์ถ๋ ฅ ๋ฐ์ดํฐ ์ธํธ์ ์ด๋ฆ
- OUTPUT_TABLE: ์ถ๋ ฅ ํ ์ด๋ธ ์ด๋ฆ
Dataflow SQL ์์
์ ์์ํ๋ ๋ฐ ๋ช ๋ถ ์ ๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ์์
์ ๋ง๋ ํ์๋ ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค. Dataflow SQL ์์
์ ์๋ ํ์ฅ์ ์ฌ์ฉํ๋ฉฐ Dataflow๊ฐ ์๋์ผ๋ก ์คํ ๋ชจ๋๋ฅผ ์ผ๊ด ๋๋ ์คํธ๋ฆฌ๋ฐ์ผ๋ก ์ ํํฉ๋๋ค. Dataflow SQL ์์
์ ๊ฒฝ์ฐ ์ด ๋์์ ์ ์ดํ ์ ์์ต๋๋ค. Dataflow SQL ์์
์ ์ค์งํ๋ ค๋ฉด cancel
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. drain
์ ์ฌ์ฉํ์ฌ Dataflow SQL ์์
์ ์ค์งํ ์ ์์ต๋๋ค.
Dataflow์์ SQL ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ Dataflow SQL ์ฐธ์กฐ ๋ฐ gcloud Dataflow sql query
๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฆฌ์ ์ด ์ง์ ๋ ๋ช ๋ น์ด ์ฌ์ฉ
Dataflow ๋ช
๋ น์ค ์ธํฐํ์ด์ค๋ gcloud CLI ๋ฒ์ 176๋ถํฐ ๋ฆฌ์ ์ ์ง์ํฉ๋๋ค. ๋ชจ๋ ๋ช
๋ น์ด์ --region
์ต์
์ ์ฌ์ฉํ์ฌ ์์
์ ๊ด๋ฆฌํ๋ ๋ฆฌ์ ์ ์ง์ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด gcloud dataflow jobs list
๋ ๋ชจ๋ ๋ฆฌ์ ์ ์์
์ ๋์ดํ์ง๋ง gcloud dataflow jobs list --region=europe-west1
๋ europe-west1
์์ ๊ด๋ฆฌ๋๋ ์์
๋ง ๋์ดํฉ๋๋ค.