Cloud Storage ๋ฐ์ดํ„ฐ ํƒ์ƒ‰ ๋ฐ ๋ถ„๋ฅ˜

์ด ๋ฌธ์„œ์—์„œ๋Š” Cloud Storage ๋ฒ„ํ‚ท์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์Šค์บ”ํ•˜์—ฌ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋Š” BigQuery์˜ ๊ธฐ๋Šฅ์ธ Dataplex ๋ฒ”์šฉ ์นดํƒˆ๋กœ๊ทธ ์ž๋™ ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํƒ์ƒ‰ ์Šค์บ”์˜ ์ผํ™˜์œผ๋กœ ์ž๋™ ํƒ์ƒ‰์€ ์ •ํ˜• ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ BigLake ๋˜๋Š” ์™ธ๋ถ€ ํ…Œ์ด๋ธ”๊ณผ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๊ฐ์ฒด ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ์ค‘์•™ ์ง‘์ค‘์‹ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด AI ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ํ†ต๊ณ„, ๋ฐ์ดํ„ฐ ๋ณด์•ˆ, ๊ฑฐ๋ฒ„๋„Œ์Šค๋ฅผ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cloud Storage ๋ฐ์ดํ„ฐ์˜ ์ž๋™ ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํƒ์ƒ‰ ์Šค์บ”์„ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ž๋™ ๊ฒ€์ƒ‰์„ ๋…๋ฆฝํ˜• ๊ฒ€์ƒ‰์ด๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค.

ํƒ์ƒ‰ ์Šค์บ” ๊ฐœ์š”

ํƒ์ƒ‰ ์Šค์บ”์—์„œ๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • Cloud Storage ๋ฒ„ํ‚ท ๋˜๋Š” ๊ฒฝ๋กœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์Šค์บ”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ •ํ˜• ๋ฐ์ดํ„ฐ์™€ ๋ฐ˜์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”๋กœ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ด๋ธ” ์ด๋ฆ„, ์Šคํ‚ค๋งˆ, ํŒŒํ‹ฐ์…˜ ์ •์˜์™€ ๊ฐ™์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.
  • ์Šคํ‚ค๋งˆ ๋ฐ ํŒŒํ‹ฐ์…˜ ์ •์˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ BigQuery์—์„œ BigLake, ์™ธ๋ถ€ ํ…Œ์ด๋ธ”, ๊ฐ์ฒด ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ณ  ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ๋ฐ ๋™์˜์ƒ๊ณผ ๊ฐ™์€ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ํƒ์ƒ‰ ์Šค์บ”์—์„œ BigLake ๊ฐ์ฒด ํ…Œ์ด๋ธ”๊ณผ ๋™์ผํ•œ ๋ฏธ๋””์–ด ์œ ํ˜•์„ ๊ณต์œ ํ•˜๋Š” ํŒŒ์ผ ๊ทธ๋ฃน์„ ๊ฐ์ง€ํ•˜๊ณ  ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด gs://images/group1์— GIF ์ด๋ฏธ์ง€๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ณ  gs://images/group2์— JPEG ์ด๋ฏธ์ง€๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ํƒ์ƒ‰ ์Šค์บ”์—์„œ ๋‘ ๊ฐœ์˜ ํŒŒ์ผ ์„ธํŠธ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

Avro์™€ ๊ฐ™์€ ์ •ํ˜• ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ํƒ์ƒ‰ ์Šค์บ”์—์„œ ํŒŒ์ผ ๊ทธ๋ฃน์„ BigLake ์™ธ๋ถ€ ํ…Œ์ด๋ธ”๋กœ ๋“ฑ๋กํ•˜๊ณ  ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹ ๋ฐ ํ˜ธํ™˜๋˜๋Š” ์Šคํ‚ค๋งˆ๊ฐ€ ํฌํ•จ๋œ ํด๋”์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ํŒŒ์ผ์„ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.

ํƒ์ƒ‰ ์Šค์บ”์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ •ํ˜• ๋ฐ์ดํ„ฐ ํ˜•์‹๊ณผ ๋ฐ˜์ •ํ˜• ๋ฐ์ดํ„ฐ ํ˜•์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํƒ์ƒ‰ ์Šค์บ”์—์„œ๋Š” ์ •ํ˜• ๋ฐ์ดํ„ฐ์™€ ๋ฐ˜์ •ํ˜• ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์••์ถ• ํ˜•์‹์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • ๋‹ค์Œ ํ˜•์‹์˜ ๋‚ด๋ถ€ ์••์ถ•:

    ์••์ถ• ํŒŒ์ผ ํ™•์žฅ์ž ์ƒ˜ํ”Œ ์ง€์›๋˜๋Š” ํ˜•์‹
    gzip .gz.parquet Parquet
    lz4 .lz4.parquet Parquet
    Snappy .snappy.parquet Parquet, ORC, Avro
    LZO .lzo.parquet Parquet, ORC
  • JSON ๋ฐ CSV ํŒŒ์ผ์˜ ์™ธ๋ถ€ ์••์ถ•:

    • gzip
    • bzip2

ํƒ์ƒ‰ ์Šค์บ”์—์„œ ์ง€์›ํ•˜๋Š” ํ…Œ์ด๋ธ” ์ˆ˜ ์ œํ•œ์„ ํ™•์ธํ•˜๋ ค๋ฉด ํ• ๋‹น๋Ÿ‰ ๋ฐ ํ•œ๋„๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํƒ์ƒ‰๋œ ํ…Œ์ด๋ธ”์€ BigQuery์— BigLake ์™ธ๋ถ€ ํ…Œ์ด๋ธ”, BigLake ๊ฐ์ฒด ํ…Œ์ด๋ธ” ๋˜๋Š” ์™ธ๋ถ€ ํ…Œ์ด๋ธ”๋กœ ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด BigQuery์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. BigLake ํ…Œ์ด๋ธ” ๋ฐ ๊ฐ์ฒด ํ…Œ์ด๋ธ”์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์บ์‹ฑ๋„ ์‚ฌ์šฉ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  BigLake ํ…Œ์ด๋ธ”์€ ๊ฒ€์ƒ‰ ๋ฐ ํƒ์ƒ‰์„ ์œ„ํ•ด Dataplex ๋ฒ”์šฉ ์นดํƒˆ๋กœ๊ทธ์— ์ž๋™์œผ๋กœ ์ˆ˜์ง‘๋ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

Enable the Dataplex API.

Enable the API

Dataplex Universal Catalog ์„œ๋น„์Šค ๊ณ„์ •์— ํ•„์š”ํ•œ ์—ญํ• 

์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ํ”„๋กœ์ ํŠธ์˜ Dataplex Universal Catalog ์„œ๋น„์Šค ๊ณ„์ •์— IAM ๊ถŒํ•œ์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

  service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com
  

PROJECT_NUMBER๋ฅผ Dataplex API๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ํ”„๋กœ์ ํŠธ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

Dataplex ์„œ๋น„์Šค ๊ณ„์ •์— ํƒ์ƒ‰ ์Šค์บ”์„ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๊ด€๋ฆฌ์ž์—๊ฒŒ Dataplex ์„œ๋น„์Šค ๊ณ„์ •์— ๋‹ค์Œ IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜์„ธ์š”.

์—ญํ•  ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”„๋กœ์ ํŠธ, ํด๋”, ์กฐ์ง์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด๋Ÿฌํ•œ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์—๋Š” ํƒ์ƒ‰ ์Šค์บ”์„ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ •ํ™•ํ•œ ๊ถŒํ•œ์„ ๋ณด๋ ค๋ฉด ํ•„์ˆ˜ ๊ถŒํ•œ ์„น์…˜์„ ํŽผ์น˜์„ธ์š”.

ํ•„์ˆ˜ ๊ถŒํ•œ

ํƒ์ƒ‰ ์Šค์บ”์„ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ bigquery.datasets.create
  • ๋ฐ์ดํ„ฐ ์†Œ์Šค ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ storage.buckets.get
  • ๋ฐ์ดํ„ฐ ์†Œ์Šค ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ storage.objects.get
  • ๋ฐ์ดํ„ฐ ์†Œ์Šค ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ storage.objects.list
  • ๋ฐ์ดํ„ฐ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ bigquery.datasets.get
  • ์—ฐ๊ฒฐ ์ œ๊ณต:
    • BigQuery ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ bigquery.connections.delegate
    • BigQuery ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ bigquery.connections.use

๊ด€๋ฆฌ์ž๋Š” ์ปค์Šคํ…€ ์—ญํ• ์ด๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ์‚ฌ์šฉํ•˜์—ฌ Dataplex ์„œ๋น„์Šค ๊ณ„์ •์— ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

BigQuery ์—ฐ๊ฒฐ ์„œ๋น„์Šค ๊ณ„์ •์— ํ•„์š”ํ•œ ์—ญํ• 

BigQuery ์—ฐ๊ฒฐ ์„œ๋น„์Šค ๊ณ„์ •์— ํƒ์ƒ‰ ์Šค์บ”์„ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๊ด€๋ฆฌ์ž์—๊ฒŒ BigQuery ์—ฐ๊ฒฐ ์„œ๋น„์Šค ๊ณ„์ •์— Cloud Storage ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ Dataplex ํƒ์ƒ‰ ์„œ๋น„์Šค ์—์ด์ „ํŠธ(roles/dataplex.discoveryServiceAgent) IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜์„ธ์š”.

์—ญํ•  ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”„๋กœ์ ํŠธ, ํด๋”, ์กฐ์ง์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์—๋Š” ํƒ์ƒ‰ ์Šค์บ”์„ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ •ํ™•ํ•œ ๊ถŒํ•œ์„ ๋ณด๋ ค๋ฉด ํ•„์ˆ˜ ๊ถŒํ•œ ์„น์…˜์„ ํŽผ์น˜์„ธ์š”.

ํ•„์ˆ˜ ๊ถŒํ•œ

ํƒ์ƒ‰ ์Šค์บ”์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ bigquery.datasets.create
  • ๋ฐ์ดํ„ฐ ์†Œ์Šค ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ storage.buckets.get
  • ๋ฐ์ดํ„ฐ ์†Œ์Šค ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ storage.objects.get
  • ๋ฐ์ดํ„ฐ ์†Œ์Šค ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ storage.objects.list
  • ๋ฐ์ดํ„ฐ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ bigquery.datasets.get
  • ์—ฐ๊ฒฐ ์ œ๊ณต:
    • BigQuery ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ bigquery.connections.delegate
    • BigQuery ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ bigquery.connections.use

๊ด€๋ฆฌ์ž๋Š” ์ปค์Šคํ…€ ์—ญํ• ์ด๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ์‚ฌ์šฉํ•˜์—ฌ BigQuery ์—ฐ๊ฒฐ ์„œ๋น„์Šค ๊ณ„์ •์— ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•„์š”ํ•œ ์—ญํ• 

๋ฐ์ดํ„ฐ ํƒ์ƒ‰ ๊ฒ€์ƒ‰์„ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด ๊ด€๋ฆฌ์ž์—๊ฒŒ Cloud Storage ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ ๋‹ค์Œ IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜์„ธ์š”.

  • DataScan ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ „์ฒด ์•ก์„ธ์Šค ๊ถŒํ•œ: ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ Dataplex DataScan ๊ด€๋ฆฌ์ž(roles/dataplex.dataScanAdmin) ์—ญํ• 
  • DataScan ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ: ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ Dataplex DataScan ํŽธ์ง‘์ž(roles/dataplex.dataScanEditor) ์—ญํ• 
  • ๊ฒฐ๊ณผ๋ฅผ ์ œ์™ธํ•œ DataScan ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ฝ๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ: ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ Dataplex DataScan ๋ทฐ์–ด(roles/dataplex.dataScanViewer) ์—ญํ• 
  • ๊ฒฐ๊ณผ๋ฅผ ํฌํ•จํ•œ DataScan ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ฝ๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ: ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ Dataplex DataScan DataViewer(roles/dataplex.dataScanDataViewer) ์—ญํ• 

์—ญํ•  ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”„๋กœ์ ํŠธ, ํด๋”, ์กฐ์ง์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด๋Ÿฌํ•œ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์—๋Š” ๋ฐ์ดํ„ฐ ํƒ์ƒ‰ ์Šค์บ”์„ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ์ •ํ™•ํ•œ ๊ถŒํ•œ์„ ๋ณด๋ ค๋ฉด ํ•„์ˆ˜ ๊ถŒํ•œ ์„น์…˜์„ ํŽผ์น˜์„ธ์š”.

ํ•„์ˆ˜ ๊ถŒํ•œ

๋ฐ์ดํ„ฐ ํƒ์ƒ‰ ์Šค์บ”์„ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • DataScan ๋งŒ๋“ค๊ธฐ: ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ dataplex.datascans.create
  • DataScan ์‚ญ์ œ: ํ”„๋กœ์ ํŠธ ๋˜๋Š” DataScan ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ dataplex.datascans.delete
  • ๊ฒฐ๊ณผ๋ฅผ ์ œ์™ธํ•œ DataScan ์„ธ๋ถ€์ •๋ณด ๋ณด๊ธฐ: ํ”„๋กœ์ ํŠธ ๋˜๋Š” DataScan ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ dataplex.datascans.get
  • ๊ฒฐ๊ณผ๋ฅผ ํฌํ•จํ•œ DataScan ์„ธ๋ถ€์ •๋ณด ๋ณด๊ธฐ: ํ”„๋กœ์ ํŠธ ๋˜๋Š” DataScan ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ dataplex.datascans.getData
  • DataScans ๋‚˜์—ด: ํ”„๋กœ์ ํŠธ ๋˜๋Š” DataScan ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ dataplex.datascans.list
  • DataScan ์‹คํ–‰: ํ”„๋กœ์ ํŠธ ๋˜๋Š” DataScan ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ dataplex.datascans.run
  • DataScan ์„ค๋ช… ์—…๋ฐ์ดํŠธ: ํ”„๋กœ์ ํŠธ ๋˜๋Š” DataScan ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ dataplex.datascans.update
  • DataScan์˜ IAM ๊ถŒํ•œ ๋ณด๊ธฐ: ํ”„๋กœ์ ํŠธ ๋˜๋Š” DataScan ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ dataplex.datascans.getIamPolicy
  • DataScan์—์„œ IAM ๊ถŒํ•œ ์„ค์ •: ํ”„๋กœ์ ํŠธ ๋˜๋Š” DataScan ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ dataplex.datascans.setIamPolicy

์ปค์Šคํ…€ ์—ญํ• ์ด๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๊ถŒํ•œ์„ ๋ถ€์—ฌ๋ฐ›์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒ์ƒ‰ ์Šค์บ” ๋งŒ๋“ค๊ธฐ

๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋ ค๋ฉด ํƒ์ƒ‰ ์Šค์บ”์„ ๋งŒ๋“ค๊ณ  ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์Šค์บ” ์ผ์ •์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์š”์ฒญ ์‹œ ์Šค์บ”์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒ์ƒ‰ ์Šค์บ”์ด ์‹คํ–‰๋˜๋ฉด ์Šค์บ”๋œ Cloud Storage ๋ฒ„ํ‚ท์— ํ•ด๋‹นํ•˜๋Š” ์ƒˆ ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ BigQuery์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ ์ด๋ฆ„์€ Cloud Storage ๋ฒ„ํ‚ท ์ด๋ฆ„๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„ํ‚ท ์ด๋ฆ„์— ์ž˜๋ชป๋œ ๋ฌธ์ž๊ฐ€ ์žˆ์œผ๋ฉด ๋ฐ‘์ค„๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ธํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์„œํ”ฝ์Šค๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค(์˜ˆ: _discovered_001). ๋ฐ์ดํ„ฐ ์„ธํŠธ์—๋Š” ์ถ”๊ฐ€ ๋ถ„์„์„ ์œ„ํ•ด ํƒ์ƒ‰ ์Šค์บ”์„ ํ†ตํ•ด ์ƒ์„ฑ๋œ BigLake ์™ธ๋ถ€ ํ…Œ์ด๋ธ” ๋˜๋Š” BigLake ์ด์™ธ์˜ ์™ธ๋ถ€ ํ…Œ์ด๋ธ”์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„ ๋ณ„ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์„ ๋ณ„๋กœ ์ด๋™

  2. Cloud Storage ํƒ์ƒ‰ ํƒญ์—์„œ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ๊ฒ€์ƒ‰ ์Šค์บ” ๋งŒ๋“ค๊ธฐ ์ฐฝ์—์„œ ์Šค์บ”ํ•  ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  4. ์Šค์บ”์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  5. ์Šค์บ” ID ํ•„๋“œ์— Google Cloud์˜ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™์— ๋”ฐ๋ผ ๊ณ ์œ  ID๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ID๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ฉด ํƒ์ƒ‰ ์Šค์บ”์—์„œ ์Šค์บ” ID๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  6. ์„ ํƒ์‚ฌํ•ญ: ์Šค์บ”์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  7. ์Šค์บ”ํ•  ํŒŒ์ผ์ด ํฌํ•จ๋œ Cloud Storage ๋ฒ„ํ‚ท์„ ์ง€์ •ํ•˜๋ ค๋ฉด ๋ฒ„ํ‚ท ํ•„๋“œ์—์„œ ๋ฒ„ํ‚ท์„ ์ฐพ์•„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  8. ์„ ํƒ์‚ฌํ•ญ: ํŒŒ์ผ ํ•„ํ„ฐ๋ง์„ ์œ„ํ•œ glob ํŒจํ„ด ๋ชฉ๋ก์„ ์ œ๊ณตํ•˜์—ฌ ํƒ์ƒ‰ ์Šค์บ”์— ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์ œ์™ธํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

    • ํฌํ•จ: ๋ฐ์ดํ„ฐ์˜ ํ•˜์œ„ ์ง‘ํ•ฉ๋งŒ ์Šค์บ”ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ํฌํ•จํ•  ๊ฐ์ฒด์™€ ์ผ์น˜ํ•˜๋Š” glob ํŒจํ„ด ๋ชฉ๋ก์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ์ œ์™ธ: ์ œ์™ธํ•  ๊ฐ์ฒด์™€ ์ผ์น˜ํ•˜๋Š” glob ํŒจํ„ด ๋ชฉ๋ก์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด ํƒ์ƒ‰ ์Šค์บ”์—์„œ gs://test_bucket/foo/..๋ฅผ ์ œ์™ธํ•˜๋ ค๋ฉด **/foo/**๋ฅผ ์ œ์™ธ ๊ฒฝ๋กœ๋กœ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ "**/foo/**" ๋Œ€์‹  **/foo/**๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ํฌํ•จ ํŒจํ„ด๊ณผ ์ œ์™ธ ํŒจํ„ด์„ ๋ชจ๋‘ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ ์ œ์™ธ ํŒจํ„ด์ด ๋จผ์ € ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  9. ์„ ํƒ์‚ฌํ•ญ: ํ”„๋กœ์ ํŠธ์—์„œ ํƒ์ƒ‰ ์Šค์บ”์œผ๋กœ ์ƒ์„ฑ๋œ BigLake ์™ธ๋ถ€ ๋˜๋Š” BigLake ์™ธ์˜ ์™ธ๋ถ€ ํ…Œ์ด๋ธ”์ด ํฌํ•จ๋œ BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ Cloud Storage ๋ฒ„ํ‚ท์„ ํฌํ•จํ•˜๋Š” ํ”„๋กœ์ ํŠธ์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

  10. ์œ„์น˜ ์œ ํ˜•์—์„œ BigQuery ๊ฒŒ์‹œ ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋ฆฌ์ „ ๋˜๋Š” ๋ฉ€ํ‹ฐ ๋ฆฌ์ „(์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ)์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  11. ์Šค์บ”ํ•œ ๋ฐ์ดํ„ฐ์—์„œ BigLake ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๋ ค๋ฉด ์—ฐ๊ฒฐ ID ํ•„๋“œ์— Google Cloud ๋ฆฌ์†Œ์Šค ์—ฐ๊ฒฐ ID๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ BigQuery์˜Google Cloud ๋ฆฌ์†Œ์Šค ์—ฐ๊ฒฐ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    Cloud Storage ๋ฒ„ํ‚ท ์œ„์น˜์™€ ํ˜ธํ™˜๋˜๋Š” BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ ์œ„์น˜์™€ ๋™์ผํ•œ ์œ„์น˜์— ์ƒˆ ์—ฐ๊ฒฐ ID๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋ฆฌ์†Œ์Šค ์—ฐ๊ฒฐ ID๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ฉด ํƒ์ƒ‰ ์Šค์บ”์—์„œ BigLake ์ด์™ธ์˜ ์™ธ๋ถ€ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  12. ํƒ์ƒ‰ ๋นˆ๋„ ์„น์…˜์—์„œ ํƒ์ƒ‰ ์Šค์บ”์„ ์‹คํ–‰ํ•  ์‹œ๊ธฐ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • ๋ฐ˜๋ณต: ์‚ฌ์ „ ์ •์˜๋œ ์ผ์ •์— ๋”ฐ๋ผ ์Šค์บ”์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘ ์‹œ๊ฐ„, ์Šค์บ” ์‹คํ–‰ ์ผ์ˆ˜, ๋นˆ๋„(์˜ˆ: ์‹œ๊ฐ„๋‹น)๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    • ์š”์ฒญ ์‹œ: ์š”์ฒญ ์‹œ ์Šค์บ”์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

  13. ์„ ํƒ์‚ฌํ•ญ: JSON ๋˜๋Š” CSV ์‚ฌ์–‘ ์„น์…˜์—์„œ ์Šค์บ”์„ ํ†ตํ•ด JSON ๋ฐ CSV ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. JSON ๋˜๋Š” CSV ์‚ฌ์–‘์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    1. JSON ์˜ต์…˜์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด JSON ํŒŒ์‹ฑ ์˜ต์…˜ ์‚ฌ์šฉ ์„ค์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • ์œ ํ˜• ์ถ”๋ก  ์‚ฌ์šฉ ์ค‘์ง€: ๋ฐ์ดํ„ฐ๋ฅผ ์Šค์บ”ํ•  ๋•Œ ํƒ์ƒ‰ ์Šค์บ”์—์„œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ถ”๋ก ํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. JSON ๋ฐ์ดํ„ฐ์˜ ์œ ํ˜• ์ถ”๋ก ์„ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ฉด ๋ชจ๋“  ์—ด์ด ๋ฌธ์ž์—ด, ์ˆซ์ž, ๋ถˆ๋ฆฌ์–ธ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธ ์œ ํ˜•์œผ๋กœ ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.
      • ์ธ์ฝ”๋”ฉ ํ˜•์‹: UTF-8, US-ASCII, ISO-8859-1๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ์˜ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์ž…๋‹ˆ๋‹ค. ๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด UTF-8์ด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
    2. CSV ์˜ต์…˜์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด CSV ํŒŒ์‹ฑ ์˜ต์…˜ ์‚ฌ์šฉ ์„ค์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
      • ์œ ํ˜• ์ถ”๋ก  ์‚ฌ์šฉ ์ค‘์ง€: ๋ฐ์ดํ„ฐ๋ฅผ ์Šค์บ”ํ•  ๋•Œ ํƒ์ƒ‰ ์Šค์บ”์—์„œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ถ”๋ก ํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค. CSV ๋ฐ์ดํ„ฐ์˜ ์œ ํ˜• ์ถ”๋ก ์„ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ฉด ๋ชจ๋“  ์—ด์ด ๋ฌธ์ž์—ด๋กœ ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.
      • ํ—ค๋” ํ–‰: ํ—ค๋” ํ–‰ ์ˆ˜์ž…๋‹ˆ๋‹ค(0 ๋˜๋Š” 1). ๊ฐ’ 0์„ ์ง€์ •ํ•˜๋ฉด ํƒ์ƒ‰ ์Šค์บ”์—์„œ ์ œ๋ชฉ์„ ์ถ”๋ก ํ•˜๊ณ  ํŒŒ์ผ์—์„œ ์—ด ์ด๋ฆ„์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ 0์ž…๋‹ˆ๋‹ค.
      • ์—ด ๊ตฌ๋ถ„ ๊ธฐํ˜ธ ๋ฌธ์ž: ๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž์ž…๋‹ˆ๋‹ค. ๋‹จ์ผ ๋ฌธ์ž \r(์บ๋ฆฌ์ง€ ๋ฆฌํ„ด) ๋˜๋Š” \n(์ค„๋ฐ”๊ฟˆ)์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ์‰ผํ‘œ(,)์ž…๋‹ˆ๋‹ค.
      • ์ธ์ฝ”๋”ฉ ํ˜•์‹: ๋ฐ์ดํ„ฐ์˜ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์ž…๋‹ˆ๋‹ค(์˜ˆ: UTF-8, US-ASCII, ISO-8859-1). ๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด UTF-8์ด ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  14. ์˜ˆ์•ฝ๋œ ์Šค์บ”์˜ ๊ฒฝ์šฐ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•˜๊ณ  ์ฃผ๋ฌธํ˜• ์Šค์บ”์˜ ๊ฒฝ์šฐ ์ง€๊ธˆ ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์˜ˆ์•ฝ๋œ ์Šค์บ”์€ ์„ค์ •๋œ ์ผ์ •์— ๋”ฐ๋ผ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

    ์ฃผ๋ฌธํ˜• ์Šค์บ”์€ ์ฒ˜์Œ ๋งŒ๋“ค ๋•Œ ํ•œ ๋ฒˆ ์‹คํ–‰๋˜๋ฉฐ ์–ธ์ œ๋“ ์ง€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํƒ์ƒ‰ ์Šค์บ”์ด ์‹คํ–‰๋˜๋Š” ๋ฐ ๋ช‡ ๋ถ„ ์ •๋„ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud

ํƒ์ƒ‰ ์Šค์บ”์„ ๋งŒ๋“ค๋ ค๋ฉด gcloud dataplex datascans create data-discovery ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud dataplex datascans create data-discovery --location=LOCATION
--data-source-resource=BUCKET_PATH

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • LOCATION: ํƒ์ƒ‰ ์Šค์บ”์„ ๋งŒ๋“ค๋ ค๋Š” ์œ„์น˜
  • BUCKET_PATH: ์Šค์บ”ํ•  ๋ฒ„ํ‚ท์˜ Cloud Storage ๊ฒฝ๋กœ

REST

ํƒ์ƒ‰ ์Šค์บ”์„ ๋งŒ๋“ค๋ ค๋ฉด dataScans.create ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฒŒ์‹œ๋œ BigLake ํ…Œ์ด๋ธ” ์ฟผ๋ฆฌ

ํƒ์ƒ‰ ์Šค์บ”์„ ์‹คํ–‰ํ•˜๋ฉด BigLake ํ…Œ์ด๋ธ”์ด BigQuery์˜ ์ƒˆ ๋ฐ์ดํ„ฐ ์„ธํŠธ์— ๊ฒŒ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด BigQuery์—์„œ SQL์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Dataproc์—์„œ Apache Spark ๋˜๋Š” HiveQL์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SQL

BigQuery์—์„œ ํ…Œ์ด๋ธ”์„ ๋ณด๊ฑฐ๋‚˜ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. BigQuery์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฟผ๋ฆฌ ์‹คํ–‰์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Apache Spark

Dataproc ์„œ๋ฒ„๋ฆฌ์Šค ์ž‘์—…์—์„œ Spark SQL์„ ์‚ฌ์šฉํ•˜์—ฌ BigLake ํ…Œ์ด๋ธ”์„ ์ฟผ๋ฆฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๋‹ค์Œ ์ƒ˜ํ”Œ ์Šคํฌ๋ฆฝํŠธ์™€ ์œ ์‚ฌํ•œ PySpark ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    from pyspark.sql import SparkSession
    session = (
      SparkSession.builder.appName("testing")
        .config("viewsEnabled","true")
        .config("materializationDataset", "DATASET_ID")
        .config("spark.hive.metastore.bigquery.project.id", "PROJECT_ID")
        .config("spark.hive.metastore.client.factory.class", "com.google.cloud.bigquery.metastore.client.BigQueryMetastoreClientFactory")
        .enableHiveSupport()
        .getOrCreate()
    )
    
    session.sql("show databases").show()
    session.sql("use TABLE_NAME").show()
    session.sql("show tables").show()
    
    sql = "SELECT * FROM DATASET_ID.TABLE_ID LIMIT 10"
    df = session.read.format("bigquery").option("dataset", "DATASET_ID").load(sql)
    df.show()

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • DATASET_ID: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งŒ๋“ค๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ID
    • PROJECT_ID: BigLake ํ…Œ์ด๋ธ”์ด ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์˜ ID
    • TABLE_NAME: BigLake ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„
    • TABLE_ID: BigLake ํ…Œ์ด๋ธ”์˜ ID
  2. ์ผ๊ด„ ์ž‘์—… ์ œ์ถœ

๊ฒŒ์‹œ๋œ BigLake ํ…Œ์ด๋ธ” ๊ด€๋ฆฌ

๊ฒŒ์‹œ๋œ BigLake ํ…Œ์ด๋ธ”์€ ํƒ์ƒ‰ ์Šค์บ”์„ ํ†ตํ•ด BigQuery์—์„œ ์ƒ์„ฑ๋˜๊ณ  ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํƒ์ƒ‰ ์Šค์บ”์€ ์˜ˆ์•ฝ๋œ ์Šค์บ” ๋˜๋Š” ์ฃผ๋ฌธํ˜• ์Šค์บ”์ด ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ ๋ฐ์ดํ„ฐ ํƒ์ƒ‰, ์Šคํ‚ค๋งˆ ์ถ”๋ก , ์Šคํ‚ค๋งˆ ๋ณ€๊ฒฝ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์Šค์บ”์—์„œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•จ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์Šค์บ”์€ metadata-managed-mode ๋ผ๋ฒจ์ด discovery-managed๋กœ ์„ค์ •๋œ ํ…Œ์ด๋ธ”์„ ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค.

CSV ๋˜๋Š” JSON ์˜ต์…˜๊ณผ ๊ฐ™์€ ์Šคํ‚ค๋งˆ ๋ฐ ๊ธฐํƒ€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด metadata-managed-mode ๋ผ๋ฒจ์„ user_managed๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‹ค์Œ ํƒ์ƒ‰ ์Šค์บ”์ด ์‹คํ–‰๋  ๋•Œ ์Šคํ‚ค๋งˆ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์€ ํƒ์ƒ‰ ์Šค์บ”์œผ๋กœ ์ถ”๋ก ๋œ ์Šคํ‚ค๋งˆ๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ํŠน์ • ํ…Œ์ด๋ธ”์— ์˜ˆ์ƒ๋˜๋Š” ์Šคํ‚ค๋งˆ์™€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์— ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. metadata-managed-mode ๋ผ๋ฒจ์ด user_managed๋กœ ์„ค์ •๋˜๋ฉด ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ผ๋ฒจ์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋ผ๋ฒจ ํ‚ค์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•˜์—ฌ metadata-managed-mode๋ฅผ discovery-managed ๋Œ€์‹  user_managed๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ user_managed ๋ผ๋ฒจ์ด ํ…Œ์ด๋ธ”์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ํ•œ ํƒ์ƒ‰ ์Šค์บ”์€ ํ…Œ์ด๋ธ”์˜ ์Šคํ‚ค๋งˆ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฒŒ์‹œ๋œ BigLake ํ…Œ์ด๋ธ” ์—…๋ฐ์ดํŠธ

๊ธฐ๋ณธ ๊ตฌ์„ฑ์œผ๋กœ ํƒ์ƒ‰ ์Šค์บ” ์ž‘์—…์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์‹œ๋œ BigLake ํ…Œ์ด๋ธ”์˜ ๊ฒฝ์šฐ ์Šคํ‚ค๋งˆ ๋ฐ ๊ธฐํƒ€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ํƒ์ƒ‰ ์Šค์บ” ์ž‘์—…์ด ์˜ˆ์•ฝ๋œ ๋นˆ๋„๋กœ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

๊ฒŒ์‹œ๋œ BigLake ํ…Œ์ด๋ธ”์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ์ฝ˜์†”์—์„œ BigQuery ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    BigQuery๋กœ ์ด๋™

  2. ํ…Œ์ด๋ธ” ์†์„ฑ์„ ํ•˜๋‚˜ ์ด์ƒ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

  3. ํƒ์ƒ‰๊ธฐ ์ฐฝ์—์„œ ํ”„๋กœ์ ํŠธ์™€ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ํŽผ์นœ ํ›„ ํ…Œ์ด๋ธ”์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  4. ์„ธ๋ถ€์ •๋ณด ํƒญ์˜ ๋ผ๋ฒจ ์„น์…˜์—์„œ metadata-managed-mode ๋ผ๋ฒจ์ด user_managed๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. ์„ธ๋ถ€์ •๋ณด ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    2. metadata-managed-mode ํ‚ค ์˜†์— ์žˆ๋Š” ๊ฐ’ ํ•„๋“œ์— user_managed๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๊ฒŒ์‹œ๋œ BigLake ํ…Œ์ด๋ธ” ์‚ญ์ œ

๊ฒŒ์‹œ๋œ BigLake ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Cloud Storage ๋ฒ„ํ‚ท์—์„œ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

  2. Google Cloud ์ฝ˜์†”์—์„œ BigQuery ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    BigQuery๋กœ ์ด๋™

  3. ํƒ์ƒ‰๊ธฐ ์ฐฝ์—์„œ ํ”„๋กœ์ ํŠธ์™€ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ํŽผ์นœ ํ›„ ํ…Œ์ด๋ธ”์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  4. ์„ธ๋ถ€์ •๋ณด ์ฐฝ์˜ ๋ผ๋ฒจ ์„น์…˜์—์„œ metadata-managed-mode ๋ผ๋ฒจ์ด user_managed๋กœ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์€์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. user_managed๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. ์„ธ๋ถ€์ •๋ณด ์ˆ˜์ • ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    2. metadata-managed-mode ํ‚ค ์˜†์— ์žˆ๋Š” ๊ฐ’ ํ•„๋“œ์— discovery-managed๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  5. ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ํƒ์ƒ‰ ์Šค์บ”์€ ์š”์ฒญ ์‹œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

ํƒ์ƒ‰ ์Šค์บ”์ด ์‹คํ–‰๋˜๋ฉด BigLake ํ…Œ์ด๋ธ”์ด BigQuery์—์„œ ์‚ญ์ œ๋˜๋ฉฐ Spark๋ฅผ ํ†ตํ•ด ๋‚˜์—ดํ•˜๊ฑฐ๋‚˜ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์š”์ฒญ ์‹œ ํƒ์ƒ‰ ์Šค์บ” ์‹คํ–‰

์ฃผ๋ฌธํ˜• ํƒ์ƒ‰ ์Šค์บ”์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ BigQuery ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    BigQuery๋กœ ์ด๋™

  2. ํƒ์ƒ‰ ๋ฉ”๋‰ด์—์„œ ๊ฑฐ๋ฒ„๋„Œ์Šค > ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. Cloud Storage ํƒ์ƒ‰ ์ฐฝ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋Š” ํƒ์ƒ‰ ์Šค์บ”์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ์ง€๊ธˆ ์‹คํ–‰์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

ํƒ์ƒ‰ ์Šค์บ”์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด gcloud dataplex datascans run ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud dataplex datascans run DATASCAN \
  --location=LOCATION

๋‹ค์Œ ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • LOCATION: ํƒ์ƒ‰ ์Šค์บ”์ด ์ƒ์„ฑ๋œ Google Cloud ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค.
  • DATASCAN: ํƒ์ƒ‰ ์Šค์บ”์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

REST

์š”์ฒญ ์‹œ ํƒ์ƒ‰ ์Šค์บ”์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด Dataplex API์—์„œ dataScans.run ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

ํƒ์ƒ‰ ์Šค์บ” ๋‚˜์—ด

ํƒ์ƒ‰ ์Šค์บ”์„ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ BigQuery ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    BigQuery๋กœ ์ด๋™

  2. ํƒ์ƒ‰ ๋ฉ”๋‰ด์—์„œ ๊ฑฐ๋ฒ„๋„Œ์Šค > ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. Cloud Storage ํƒ์ƒ‰ ์ฐฝ์—๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์ƒ์„ฑ๋œ ํƒ์ƒ‰ ์Šค์บ”์ด ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

gcloud

gcloud dataplex datascans list --location=LOCATION --project=PROJECT_ID

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • LOCATION: ํ”„๋กœ์ ํŠธ์˜ ์œ„์น˜
  • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ ID

REST

ํ”„๋กœ์ ํŠธ์˜ ํƒ์ƒ‰ ์Šค์บ” ๋ชฉ๋ก์„ ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด Dataplex API์—์„œ dataScans.list ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํƒ์ƒ‰ ์Šค์บ” ๋ณด๊ธฐ

ํƒ์ƒ‰ ์Šค์บ”์„ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ BigQuery ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    BigQuery๋กœ ์ด๋™

  2. ํƒ์ƒ‰ ๋ฉ”๋‰ด์—์„œ ๊ฑฐ๋ฒ„๋„Œ์Šค > ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. Cloud Storage ํƒ์ƒ‰ ์ฐฝ์—์„œ ์„ธ๋ถ€์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋ ค๋Š” ํƒ์ƒ‰ ์Šค์บ”์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    • ์Šค์บ” ์„ธ๋ถ€์ •๋ณด ์„น์…˜์—๋Š” ํƒ์ƒ‰ ์Šค์บ”์— ๋Œ€ํ•œ ์„ธ๋ถ€์ •๋ณด๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
    • ์Šค์บ” ์ƒํƒœ ์„น์…˜์—๋Š” ์ตœ์‹  ์Šค์บ” ์ž‘์—…์˜ ํƒ์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

gcloud

gcloud dataplex datascans jobs describe JOB \
    --location=LOCATION \
    --datascan=DATASCAN \
    --view=FULL

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • JOB: ํƒ์ƒ‰ ์Šค์บ” ์ž‘์—…์˜ ์ž‘์—… ID์ž…๋‹ˆ๋‹ค.
  • LOCATION: ํƒ์ƒ‰ ์Šค์บ”์ด ์ƒ์„ฑ๋œ Google Cloud ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค.
  • DATASCAN: ์ž‘์—…์ด ์†ํ•œ ํƒ์ƒ‰ ์Šค์บ”์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • --view=FULL: ํƒ์ƒ‰ ์Šค์บ” ์ž‘์—… ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

REST

๋ฐ์ดํ„ฐ ํƒ์ƒ‰ ์Šค์บ” ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด Dataplex API์—์„œ dataScans.get ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ํƒ์ƒ‰ ์Šค์บ” ๊ฒฐ๊ณผ ๋ณด๊ธฐ

์ด์ „ ํƒ์ƒ‰ ์Šค์บ” ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ BigQuery ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    BigQuery๋กœ ์ด๋™

  2. ํƒ์ƒ‰ ๋ฉ”๋‰ด์—์„œ ๊ฑฐ๋ฒ„๋„Œ์Šค > ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. Cloud Storage ํƒ์ƒ‰ ์ฐฝ์—์„œ ์„ธ๋ถ€์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋ ค๋Š” ํƒ์ƒ‰ ์Šค์บ”์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ์Šค์บ” ๊ธฐ๋ก ์ฐฝ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์Šค์บ” ๊ธฐ๋ก ์ฐฝ์—์„œ๋Š” ๊ฐ ์ž‘์—…์—์„œ ์Šค์บ”๋œ ๋ ˆ์ฝ”๋“œ ์ˆ˜, ๊ฐ ์ž‘์—…์˜ ์ƒํƒœ, ์ž‘์—…์ด ์‹คํ–‰๋œ ์‹œ๊ฐ„ ๋“ฑ ์ด์ „ ์ž‘์—…์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  5. ์ž‘์—…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ์ž‘์—… ID ์—ด์—์„œ ์ž‘์—…์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

gcloud dataplex datascans jobs list \
    --location=LOCATION \
    --datascan=DATASCAN

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • LOCATION: ํƒ์ƒ‰ ์Šค์บ”์ด ์ƒ์„ฑ๋œ Google Cloud ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค.
  • DATASCAN: ์ž‘์—…์ด ์†ํ•œ ํƒ์ƒ‰ ์Šค์บ”์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

REST

ํƒ์ƒ‰ ์Šค์บ”์˜ ๋ชจ๋“  ์ž‘์—…์„ ๋ณด๋ ค๋ฉด Dataplex API์—์„œ dataScans.job/list ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํƒ์ƒ‰ ์Šค์บ” ์—…๋ฐ์ดํŠธ

ํƒ์ƒ‰ ์Šค์บ”์˜ ์ผ์ •์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด(์˜ˆ: ์ฃผ๋ฌธํ˜•์—์„œ ๋ฐ˜๋ณต์œผ๋กœ ๋ณ€๊ฒฝ) ํƒ์ƒ‰ ์Šค์บ”์„ ์—…๋ฐ์ดํŠธํ•˜์„ธ์š”.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ BigQuery ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    BigQuery๋กœ ์ด๋™

  2. ํƒ์ƒ‰ ๋ฉ”๋‰ด์—์„œ ๊ฑฐ๋ฒ„๋„Œ์Šค > ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. Cloud Storage ํƒ์ƒ‰ ์ฐฝ์—์„œ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋Š” ๊ฒ€์ƒ‰ ์Šค์บ”์— ๋Œ€ํ•ด ์ž‘์—… > ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ๊ฐ’์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

  5. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

ํƒ์ƒ‰ ์Šค์บ”์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด gcloud dataplex datascans update data-discovery ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud dataplex datascans update data-discovery SCAN_ID --location=LOCATION --description=DESCRIPTION

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • SCAN_ID: ์—…๋ฐ์ดํŠธํ•˜๋ ค๋Š” ํƒ์ƒ‰ ์Šค์บ”์˜ ID
  • LOCATION: ํƒ์ƒ‰ ์Šค์บ”์ด ์ƒ์„ฑ๋œ Google Cloud ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค.
  • DESCRIPTION: ํƒ์ƒ‰ ์Šค์บ”์— ๋Œ€ํ•œ ์ƒˆ ์„ค๋ช…

REST

ํƒ์ƒ‰ ์Šค์บ”์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด Dataplex API์—์„œ dataScans.patch ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํƒ์ƒ‰ ์Šค์บ” ์‚ญ์ œ

ํƒ์ƒ‰ ์Šค์บ”์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ BigQuery ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    BigQuery๋กœ ์ด๋™

  2. ํƒ์ƒ‰ ๋ฉ”๋‰ด์—์„œ ๊ฑฐ๋ฒ„๋„Œ์Šค > ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. Cloud Storage ๊ฒ€์ƒ‰ ์ฐฝ์—์„œ ์‚ญ์ œํ•˜๋ ค๋Š” ํƒ์ƒ‰ ์Šค์บ”์— ๋Œ€ํ•ด ์ž‘์—… > ์‚ญ์ œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ์‚ญ์ œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

gcloud dataplex datascans delete SCAN_ID --location=LOCATION --async

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • SCAN_ID: ์‚ญ์ œํ•˜๋ ค๋Š” ํƒ์ƒ‰ ์Šค์บ”์˜ ID์ž…๋‹ˆ๋‹ค.
  • LOCATION: ํƒ์ƒ‰ ์Šค์บ”์ด ์ƒ์„ฑ๋œ Google Cloud ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค.

REST

ํƒ์ƒ‰ ์Šค์บ”์„ ์‚ญ์ œํ•˜๋ ค๋ฉด Dataplex API์—์„œ dataScans.delete ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.