Study Anything ๐Ÿง

๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ - ๊ฒฐ์ธก๊ฐ’ ์ฒ˜๋ฆฌ ๋ณธ๋ฌธ

ํ”„๋กœ์ ํŠธ/[DA] ๋ฐ์ดํ„ฐ ๋ถ„์„ : ๋ฐฐ๊ตฌ

๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ - ๊ฒฐ์ธก๊ฐ’ ์ฒ˜๋ฆฌ

์†” 2022. 3. 13. 21:06

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ๋Š” ํฌ๋กค๋ง์œผ๋กœ ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ์„ ์ˆ˜์˜ ๊ณต๊ฒฉ๊ณผ ์ˆ˜๋น„ ์ง€ํ‘œ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š”

๊ณต๊ฒฉ ์„ฑ๊ณต๋ฅ , ๋ฆฌ์‹œ๋ธŒ ํšจ์œจ, ์„ธํŠธ๋‹น ์„œ๋ธŒ/์„ธํŠธ/๋ธ”๋กœํ‚น/๋””๊ทธ ์ˆ˜ ๋“ฑ์„ ๊ตฌํ–ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ๊ณต๊ฒฉ ์ง€ํ‘œ ์ค‘์—๋Š” ๊ณต๊ฒฉ ์„ฑ๊ณต๋ฅ  ๋ฟ ์•„๋‹ˆ๋ผ ๊ณต๊ฒฉ์ด ์–ผ๋งŒํผ์˜ ํšจ๊ณผ๋ฅผ ๋ƒˆ๋Š”์ง€ ๋ณด๋Š” '๊ณต๊ฒฉ ํšจ์œจ' ๋˜ํ•œ ์ค‘์š”ํ•˜๋‹ค.

๊ณต๊ฒฉ ํšจ์œจ์€ (๊ณต๊ฒฉ ์„ฑ๊ณต-๊ณต๊ฒฉ ๋ฒ”์‹ค)/๊ณต๊ฒฉ ์‹œ๋„ ๋กœ ๊ตฌํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํฌ๋กค๋ง ๋‹น์‹œ ์ „์ฒด ๋ฒ”์‹ค ๊ฐœ์ˆ˜๋งŒ ์ €์žฅํ•˜๊ณ  ๊ณต๊ฒฉ์—์„œ์˜ ๋ฒ”์‹ค์€ ์ €์žฅํ•˜์ง€ ์•Š์•„์„œ ์ถ”๊ฐ€๋กœ ๊ณต๊ฒฉ ๋ฒ”์‹ค ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ–ˆ๋‹ค.

 

 

 

( ๋ฐ์ดํ„ฐ ์ƒˆ๋กœ ์–ป๋Š” ๊ณผ์ •์€ ์ƒ๋žต )

 

 

 

์ƒˆ๋กญ๊ฒŒ ์–ป์€ ๋ฐ์ดํ„ฐ์ด๋‹ค.

 

 

์ด์ œ ๊ธฐ์กด์— ์ž‘์„ฑํ–ˆ๋˜ ์ฝ”๋“œ ์ค‘ ๊ณต๊ฒฉ ํšจ์œจ(at_rate)์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ถ€๋ถ„์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

๊ณต๊ฒฉ ์„ฑ๊ณต๋ฅ , ๊ณต๊ฒฉ ํšจ์œจ, ๋ฆฌ์‹œ๋ธŒ ํšจ์œจ์€ ๋ชจ๋‘ ๋ฐฑ๋ถ„์œจ์ด๋ฏ€๋กœ ์ด์ „์— ์ „์ฒ˜๋ฆฌ ํ•  ๋•Œ ๋†“์ณค๋˜ ๋ฐฑ๋ถ„์œจ ๋ณ€ํ™˜ ๋ถ€๋ถ„๋„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

# ๊ฒฝ๊ธฐ ์ง€ํ‘œ ๊ณ„์‚ฐํ•œ ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ

player_rate = spark.sql("""
          select name,team,pos,score,error,setcount,
              round(at_succ/at_try*100,2) as at_srate,round((at_succ-at_err)/at_try*100,2) as at_rate,
              ...
              round((rs_corr-rs_fail)/rs_try*100,2) as rs_rate,...
          from player
          """)

player_rate.show()

 

 

ํ•˜์ง€๋งŒ ์•„๋ž˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ฉด ์ค‘๊ฐ„์ค‘๊ฐ„ ๊ฒฐ์ธก๊ฐ’๋“ค์ด ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด์œ ๋Š” ์„ ์ˆ˜๋“ค์˜ ํฌ์ง€์…˜ ํŠน์„ฑ ๋•Œ๋ฌธ์ด๋‹ค.

๋ฐ์ดํ„ฐ์—์„œ ๋ณด์ด๋Š” ๋ฆฌ๋ฒ ๋กœ ํฌ์ง€์…˜์€ ์ˆ˜๋น„ ์ „๋ฌธ ํฌ์ง€์…˜์œผ๋กœ,

๊ณต๊ฒฉ์—๋Š” ์ฐธ์—ฌํ•˜์ง€ ์•Š์œผ๋ฉฐ ๊ณต๊ฒฉ์œผ๋กœ ํŒ๋‹จ๋˜๋Š” ํ–‰์œ„๋ฅผ ํ•˜๋ฉด ์ด๋Š” ๋ฒ”์‹ค๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

 

๋”ฐ๋ผ์„œ ๊ณต๊ฒฉ ์„ฑ๊ณต๋ฅ , ๊ณต๊ฒฉ ํšจ์œจ์ด null ์ธ ๊ฒฝ์šฐ๋Š” ๊ณต๊ฒฉ ์‹œ๋„๊ฐ€ 0์ด๊ธฐ ๋•Œ๋ฌธ์ด๊ณ 

๊ณต๊ฒฉ ์„ฑ๊ณต๋ฅ ์ด 0, ๊ณต๊ฒฉ ํšจ์œจ์ด -100 ์ธ ๊ฒฝ์šฐ๋Š” ๊ณต๊ฒฉ์„ ์‹œ๋„ํ–ˆ๋‹ค๊ณ  ํŒ๋‹จ๋์œผ๋‚˜ ๋ฒ”์‹ค๋กœ ๊ธฐ๋ก๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฆฌ์‹œ๋ธŒ ํšจ์œจ์ด null ์ธ ๊ฒฝ์šฐ ๋˜ํ•œ ๋ฆฌ์‹œ๋ธŒ ์‹œ๋„๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

# ์ฐธ๊ณ 
๊ณต๊ฒฉ ์„ฑ๊ณต๋ฅ (%) : ์„ฑ๊ณต/์‹œ๋„
๊ณต๊ฒฉ ํšจ์œจ(%) : (์„ฑ๊ณต-๋ฒ”์‹ค)/์‹œ๋„
๋ฆฌ์‹œ๋ธŒ ํšจ์œจ(%) : (์ •ํ™•-์‹คํŒจ)/์‹œ๋„
์„ธํŠธ๋‹น ~ (๊ฐœ) : ์„ฑ๊ณต/์ฐธ์—ฌํ•œ ์„ธํŠธ์ˆ˜

 

 

์ด ๊ฒฐ์ธก๊ฐ’๋“ค์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

SQL ์˜ CASE ๋ฌธ ์ค‘ 'CASE WHEN ~ THEN ~ ELSE ~ END AS ์ปฌ๋Ÿผ๋ช…' ํ‘œํ˜„์„ ์‚ฌ์šฉํ•ด์„œ

๊ณต๊ฒฉ ์„ฑ๊ณต๋ฅ ๊ณผ ๊ณต๊ฒฉ ํšจ์œจ, ๋ฆฌ์‹œ๋ธŒ ํšจ์œจ์—์„œ null ์ด๊ฑฐ๋‚˜ -100 ์ธ ๊ฐ’๋“ค์„ 0์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค.

# null ๊ฐ’, ์˜๋ฏธ์—†๋Š” ๊ฐ’ 0์œผ๋กœ ๋ณ€๊ฒฝ

player_rate2 = spark.sql("""
          select ...,
          case when at_srate is null then 0.0 else at_srate end as at_srate,
          case when at_rate is null or at_rate = -100.0 then 0.0 else at_rate end as at_rate,
          ...,
          case when rs_rate is null then 0.0 else rs_rate end as rs_rate,...
          from player_rate
          """)

player_rate2.show()

๋ฐ์ดํ„ฐ๋“ค์ด ์ž˜ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

์ด๋ ‡๊ฒŒ ํ•ด์„œ ๋ˆ„๋ฝ๋๋˜ ๊ณต๊ฒฉ ํšจ์œจ๊ณผ ๊ฒฐ์ธก๊ฐ’ ์ฒ˜๋ฆฌ๋ฅผ ๋ชจ๋‘ ๋งˆ์ณค๋‹ค!

 

 

 

 

(์ฐธ๊ณ ) ํ•˜๋‘ก์—์„œ ํŒŒ์ผ, ๋””๋ ‰ํ† ๋ฆฌ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•

๋”๋ณด๊ธฐ

์ถ”๊ฐ€์ ์œผ๋กœ ์ด์ „์— ์ž˜๋ชป ๋งŒ๋“  ๋ฐ์ดํ„ฐ๋“ค์„ ํ•˜๋‘ก์—์„œ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ •๋ฆฌํ•ด๋‘๋ ค๊ณ  ํ•œ๋‹ค.

 

๋จผ์ € > hadoop fs -rm /data/[ํŒŒ์ผ๋ช…] ๋ช…๋ น์–ด๋กœ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋“ค์ด ์žˆ๋Š”์ง€ ํ™•์ธํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋””๋ ‰ํ† ๋ฆฌ๋ผ๋ฉฐ ์‚ญ์ œ๊ฐ€ ๋˜์ง€ ์•Š๊ณ  > hadoop fs -ls /data ๋ช…๋ น์–ด๋กœ ํ™•์ธํ•ด๋ดค์„ ๋•Œ ํŒŒ์ผ๋“ค์ด ๊ทธ๋Œ€๋กœ์ธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ •ํ™•ํ•œ ์ด์œ ๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ŠคํŒŒํฌ๋ฅผ ํ†ตํ•ด ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ฒ˜๋Ÿผ ์ธ์‹๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

(๊ทธ๋ž˜์„œ์ธ์ง€ ํฌ๊ธฐ๋„ 0์ด๋ผ๊ณ  ๋‚˜์˜ด)

 

๊ทธ๋ž˜์„œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด๋กœ ์‚ญ์ œํ•ด์ฃผ์—ˆ๋‹ค.

> hadoop fs -rm -r /data/[ํŒŒ์ผ๋ช…] ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ๋ฆฌ๋ˆ…์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ * ๊ธฐํ˜ธ๋Š” ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์˜๋ฏธํ•˜๋ฏ€๋กœ

๋งŒ์•ฝ > hadoop fs -rm -r /data/dogong*.csv ๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด

dogong.csv, dogong-2.csv, dogong_r.csv ๋“ค์ด ๋ชจ๋‘ ์‚ญ์ œ๋œ๋‹ค.

์ด ๋•Œ '.csv' ๋ถ€๋ถ„์€ ํ™•์žฅ์ž๋ช…์ด๋ผ์„œ ๊ทธ๋Ÿฐ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ * ๋’ค์— ์ƒ๋žตํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.

 

์‚ญ์ œํ•  ๋ฐ์ดํ„ฐ๋“ค์„ ๋ชจ๋‘ ์‚ญ์ œํ•˜๊ณ  ํ™•์ธํ•ด ๋ณธ ๋ชจ์Šต์ด๋‹ค.

๋ฐ์ดํ„ฐ ์‚ญ์ œ
์‚ญ์ œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ

 

 

728x90
Comments