3 Wed

TIL

[AI ์Šค์ฟจ 1๊ธฐ] 9์ฃผ์ฐจ DAY 3

Big Data : SparkSQL์„ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„

๋ฐฐ์›€์˜ ์ „ํ˜•์ ์ธ ํŒจํ„ด

  • ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ฒ„ํ‹ฐ๋Š” ํž˜ => ์ฆ๊ธธ์ค„ ์•Œ๊ธฐ

  • ๋ง‰ํ˜”์„ ๋•Œ ๋‚ด๊ฐ€ ๋ญ˜ ๋ชจ๋ฅด๋Š”์ง€ ์ƒ๊ฐํ•ด๋ด์•ผ ํ•จ

  • ์ž˜ํ•˜๋Š” ์‚ฌ๋žŒ๋ณด๊ณ  ๊ธฐ์ฃฝ์ง€ ์•Š๊ธฐ => ๊ทธ๋“ค์ด ๋จผ์ € ์‹œ์ž‘ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋˜ ์ด๊ฒƒ์ด ์‚ฌ์‹ค์ด๋‹ค

์ƒˆ๋กœ์šด ๊ฒƒ์„ ์ฒ˜์Œ ๋ฐฐ์šธ ๋•Œ์˜ ์ข‹์€ ์ž์„ธ

  • ์ž์‹ ์ด ์•„๋Š” ๊ฒƒ๊ณผ ๋ชจ๋ฅด๋Š” ๊ฒƒ์„ ๋ถ„๋ช…ํžˆ ์ดํ•ด

    • ๋ฉ์ฒญํ•œ ์งˆ๋ฌธ์€ ์—†์Œ

  • ๋งˆ์Œ์„ ํŽธํ•˜๊ฒŒ ๋จน๊ธฐ

    • ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ํž˜๋“ค๋ฉด ๋‚จ๋“ค๋„ ํž˜๋“ฆ

    • ๋‚˜๋ณด๋‹ค ๋” ์ž˜ํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋˜‘๋˜‘ํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ๋” ๋…ธ๋ ฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ

  • ๋ฐฐ์›€์˜ ๋ฐœ์ „์€ Tipping point๋ฅผ ๊ฑฐ์น˜๋ฉด์„œ ํญ๋ฐœํ•˜๋Š” ํ˜•ํƒœ

    • ๋ฐœ์ „์ด ๋”๋”˜ ๊ธฐ๊ฐ„์„ ์ฆ๊ฒจ์•ผ ์ด๋Ÿฌํ•œ ์ •์ฒด๊ธฐ ๋’ค์— ํญ๋ฐœ์ ์ธ ๋ฐœ์ „์˜ ์‹œ๊ธฐ๊ฐ€ ๋‹ค๊ฐ€์˜จ๋‹ค

๋น…๋ฐ์ดํ„ฐ์—์„œ ์ค‘์š”ํ•œ SQL

  • ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ๊ฑฐ๋ฉด SQL์€ ๋Š์ž„์—†์ด ์ค‘์š”

  • ๋ชจ๋“  ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค๋Š” SQL ๊ธฐ๋ฐ˜

  • Spark๋„ ์˜ˆ์™ธ๋Š” ์•„๋‹˜

    • SparkSQL

  • ๋ฐ์ดํ„ฐ ๋ถ„์•ผ์—์„œ ์ผํ•˜๊ณ ์ž ํ•˜๋ฉด ๋ฐ˜๋“œ์‹œ ์ตํ˜€์•ผํ•  ๊ธฐ๋ณธ ๊ธฐ์ˆ 

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ๋Œ€ํ‘œ์ ์ธ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค

    • MySQL, Postgres, Oracle

    • Redshift, Snowflake

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” 2๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋จ

    • ๊ฐ€์žฅ ๋ฐ‘๋‹จ์—๋Š” ํ…Œ์ด๋ธ”๋“ค์ด ์กด์žฌ. ํ…Œ์ด๋ธ”์€ ์—‘์…€์˜ ์‹œํŠธ์— ํ•ด๋‹น

    • ํ…Œ์ด๋ธ”๋“ค์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๋Š” ํด๋” ๋ฐ‘์œผ๋กœ ๊ตฌ์„ฑ

  • ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ. ์Šคํ‚ค๋งˆ๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.

    • ํ…Œ์ด๋ธ”์€ ๋ ˆ์ฝ”๋“œ๋“ค๋กœ ๊ตฌ์„ฑ

    • ๋ ˆ์ฝ”๋“œ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํ•„๋“œ๋กœ ๊ตฌ์„ฑ

    • ํ•„๋“œ๋Š” ์ด๋ฆ„๊ณผ ํƒ€์ž…์œผ๋กœ ๊ตฌ์„ฑ๋จ

  • ์˜ˆ์ œ 1 - ์›น์„œ๋น„์Šค ์‚ฌ์šฉ์ž/์„ธ์…˜ ์ •๋ณด

    • ์‚ฌ์šฉ์ž ID

      • ๋ณดํ†ต ์›น์„œ๋น„์Šค์—์„œ๋Š” ๋“ฑ๋ก๋œ ์‚ฌ์šฉ์ž๋งˆ๋‹ค ์œ ์ผํ•œ ID๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค

    • ์„ธ์…˜ ID

      • ์‚ฌ์šฉ์ž๊ฐ€ ์™ธ๋ถ€ ๋งํฌ(๋ณดํ†ต ๊ด‘๊ณ )๋ฅผ ํƒ€๊ณ  ์˜ค๊ฑฐ๋‚˜ ์ง์ ‘ ๋ฐฉ๋ฌธํ•ด์„œ ์˜ฌ ๊ฒฝ์šฐ ์„ธ์…˜์„ ์ƒ์„ฑ

      • ์ฆ‰ ํ•˜๋‚˜์˜ ์‚ฌ์šฉ์ž ID๋Š” ์—ฌ๋Ÿฌ ์„ธ์…˜ ID๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ

      • ๋ณดํ†ต ์„ธ์…˜์˜ ๊ฒฝ์šฐ ์„ธ์…˜์„ ๋งŒ๋“ค์–ด๋‚ธ ์†Œ์Šค๋ฅผ ์ฑ„๋„์ด๋ž€ ์ด๋ฆ„์œผ๋กœ ๊ธฐ๋ก

        • ๋งˆ์ผ€ํŒ… ๊ด€๋ จ ๊ธฐ์—ฌ๋„ ๋ถ„์„์„ ์œ„ํ•จ

      • ์„ธ์…˜ ์ƒ์„ฑ ์‹œ๊ฐ„๋„ ๊ธฐ๋ก

    • ์ด ์ •๋ณด๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„๊ณผ ์ง€ํ‘œ ์„ค์ •์ด ๊ฐ€๋Šฅ

      • ๋งˆ์ผ€๋”ฉ ๊ด€๋ จ

      • ์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ”ฝ ๊ด€๋ จ

    • EX)

      • ์‚ฌ์šฉ์ž ID 100๋ฒˆ : ์ด 3๊ฐœ์˜ ์„ธ์…˜(ํŒŒ๋ž€ ๋ฐฐ๊ฒฝ)์„ ๊ฐ–๋Š” ์˜ˆ์ œ

      • ์„ธ์…˜ 1 : ๊ตฌ๊ธ€ ํ‚ค์›Œ๋“œ ๊ด‘๊ณ ๋กœ ์‹œ์ž‘ํ•œ ์„ธ์…˜

      • ์„ธ์…˜ 2 : ํŽ˜์ด์Šค๋ถ ๊ด‘๊ณ ๋ฅผ ํ†ตํ•ด ์ƒ๊ธด ์„ธ์…˜ => ๋ฆฌํƒ€๊ฒŒํŒ… ๊ด‘๊ณ 

      • ์„ธ์…˜ 3 : ๋„ค์ด๋ฒ„ ๊ด‘๊ณ ๋ฅผ ํ†ตํ•ด ์ƒ๊ธด ์„ธ์…˜

SQL ์†Œ๊ฐœ

  • SQL : Structured Query Language

  • ๋‘ ์ข…๋ฅ˜์˜ ์–ธ์–ด๋กœ ๊ตฌ์„ฑ๋จ

    • DDL (Data Definition Language) : ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ์–ธ์–ด

    • DML (Data Manipulation Language) : ํ…Œ์ด๋ธ”์— ๋ ˆ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€,์‚ญ์ œ,๊ฐฑ์‹  ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด

  • DDL

    • CREATE TABLE

    • DROP TABLE

    • ALTER TABLE

  • DML

    • SELECT ํ•„๋“œ ์ด๋ฆ„

    • FROM ํ…Œ์ด๋ธ” ์ด๋ฆ„

    • WHERE ์„ ํƒ์กฐ๊ฑด

    • ORDER BY ์ •๋ ฌ

    • LIMIT N (N๊ฐœ๋งŒ)

    • EX

      • SELECT * FROM raw LIMIT 10;

        • ์ฒ˜์Œ ๋ ˆ์ฝ”๋“œ 10๊ฐœ์— ๋Œ€ํ•ด์„œ ๋ชจ๋“  ํ•„๋“œ๋ฅผ ๋ฆฌํ„ด

      • SELECT COUNT(1) FROM raw

        • ์ด ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์˜ ์ˆ˜๋ฅผ ๋ฆฌํ„ด

      • SELECT COUNT(1) FROM raw WHERE channel = 'Facebook'

        • channel์ด Facebook์ธ ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์˜ ์ˆ˜๋ฅผ ๋ฆฌํ„ด

Big Data : SparkSQL์ด๋ž€?

SparkSQL

  • ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Spark ๋ชจ๋“ˆ

  • ๋Œ€ํ™”ํ˜• Spark ์…ธ์ด ์ œ๊ณต๋จ

  • ํ•˜๋‘ก ์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋œ Hive ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ์—†์ด ์ตœ๋Œ€

  • ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์„ SQL๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

SparkSQL ์‚ฌ์šฉ๋ฒ•

  • ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„ ์ƒ์„ฑ

  • Redshift ์—ฐ๊ฒฐ

    • SparkSession์„ ๋งŒ๋“ค ๋•Œ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋งž๋Š” JDBC jar๋ฅผ ์ง€์ •

    • SparkSession์˜ read ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ

      • ๋กœ๊ทธ์ธ ๊ด€๋ จ ์ •๋ณด์™€ ์ฝ์–ด์˜ค๊ณ ์ž ํ•˜๋Š” ํ…Œ์ด๋ธ” ๋˜๋Š” SQL์„ ์ง€์ •

      • ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์œผ๋กœ ๋ฆฌํ„ด๋จ

    • ์•ž์„œ ๋ฆฌํ„ด๋œ ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„์— ํ…Œ์ด๋ธ” ์ด๋ฆ„ ์ง€์ •

    • SparkSession์˜ sql ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ

Last updated

Was this helpful?