Study Anything ๐Ÿง

[Spark] ์ŠคํŒŒํฌ ์„ค์น˜ํ•˜๊ณ  csv ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋ณธ๋ฌธ

์Šคํ„ฐ๋””/Data Analytics

[Spark] ์ŠคํŒŒํฌ ์„ค์น˜ํ•˜๊ณ  csv ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

์†” 2022. 2. 15. 23:20

์ŠคํŒŒํฌ๋Š” ๋ฐ์ดํ„ฐ ๊ณผํ•™์—์„œ ์ž์ฃผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ณต ์—ฐ์‚ฐ์— ์ ํ•ฉํ•œ ๊ฐœ๋…๊ณผ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ธ-๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์—”์ง„์œผ๋กœ ๋น ๋ฅธ ์†๋„๊ฐ€ ํŠน์ง•์ด๋‹ค.

๋‹ค์–‘ํ•œ ์–ธ์–ด์™€ ๋ฐ์ดํ„ฐ ํฌ๋งท์„ ์ง€์›ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋น…๋ฐ์ดํ„ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ๋งŽ์ด ์“ฐ์ด๋Š” ํ•˜๋‘ก๊ณผ ๊ฐ™์ด ์“ฐ์ด๊ธฐ๋„ ํ•œ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ ๋ฟ ์•„๋‹ˆ๋ผ ์ŠคํŒŒํฌ SQL, MLlib, ์ŠคํŠธ๋ฆฌ๋ฐ ๋“ฑ ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์žˆ๋‹ค.

๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ๋Š” ๊ฐ์ฒด์˜ ๋ถ„์‚ฐ ์‹œํ€€์Šค์ธ RDD(Resilient Distributed Dataset)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ RDD๋Š” ๋‹ค์–‘ํ•œ ๊ด€๊ณ„ ๋Œ€์ˆ˜ ์—ฐ์‚ฐ์ž(SELECT, JOIN ๋“ฑ)์™€ ์Šค์นผ๋ผ, ํŒŒ์ด์ฌ ๋ณ€ํ™˜ ๋กœ์ง์˜ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. RDD๋Š” ๋˜ํ•œ RAM์— ์ €์žฅ๋˜๋ฉฐ ์ž๋™์œผ๋กœ ๊ฒฐํ•จ์„ ๊ทน๋ณตํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ง€์›ํ•œ๋‹ค. ๋งŒ์•ฝ RDD์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ˆ„๋ฝ๋˜๋ฉด ๋ฐ์ดํ„ฐ์— ์ผ๋ถ€๋ถ„์— ๋Œ€ํ•œ ์—ฐ์‚ฐ๋งŒ ์žฌ์‹คํ–‰ํ•ด์„œ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๊ณ  SQL ์‹คํ–‰ ๊ฒฐ๊ณผ๋กœ ์–ป์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ„๋„์˜ ๋””์Šคํฌ๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

 

์ด๋ ‡๊ฒŒ ์—ฌ๋Ÿฌ ์žฅ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ŠคํŒŒํฌ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์œ„ํ•ด ํ™˜๊ฒฝ์„ ๊ฐ–์ถฐ๋ณด์•˜๋‹ค.

 

 

(1) ์ž๋ฐ”, ํŒŒ์ด์ฌ ์„ค์น˜

์ž๋ฐ”์™€ ํŒŒ์ด์ฌ์€ ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ณผ์ •์€ ํŒจ์Šคํ–ˆ๋‹ค.

๋‚ด ํ™˜๊ฒฝ์˜ ์ž๋ฐ” ๋ฒ„์ „์€ 13.0.2 ์ด๊ณ , ํŒŒ์ด์ฌ ๋ฒ„์ „์€ 3.7.4 ์ด๋‹ค.

์ด ๋•Œ ์ž๋ฐ”์˜ ๋ฒ„์ „์ด ๋„ˆ๋ฌด ๋†’๊ฑฐ๋‚˜ ํŒŒ์ด์ฌ์˜ ๋ฒ„์ „์ด 3.0 ๋ณด๋‹ค ๋‚ฎ์œผ๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋”๋ผ๋„ ๋ฒ„์ „์€ ๊ผญ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. (์ž๋ฐ” ๋ฒ„์ „ 8์ด๋‚˜ 11 ๊ถŒ์žฅ)

 

 

 

(2) ์ŠคํŒŒํฌ, winutils ์„ค์น˜

https://spark.apache.org/downloads.html

์œ„ ๋งํฌ์—์„œ ํ•˜๋‘ก์ด ํฌํ•จ๋œ ์ŠคํŒŒํฌ๋ฅผ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

์„ค์น˜ํ•  ๋ฒ„์ „์„ ์„ ํƒํ•˜๊ณ  ์„ธ ๋ฒˆ์งธ์— ์—ฐ๊ฒฐ๋œ ๋งํฌ๋ฅผ ํด๋ฆญํ•ด ๋‹ค์šด๋ฐ›๋Š”๋‹ค.

๋‚˜๋Š” ์ŠคํŒŒํฌ ๋ฒ„์ „ 3.0.3, ํ•˜๋‘ก ๋ฒ„์ „ 3.2 ์œผ๋กœ ๋‹ค์šด๋ฐ›์•˜๋‹ค.

์ŠคํŒŒํฌ, ํ•˜๋‘ก

 

์ŠคํŒŒํฌ๋ฅผ ๋จผ์ € ๋‹ค์šด๋ฐ›๊ณ ๋‚˜๋ฉด winutils.exe ๋ฅผ ๋‹ค์šด๋ฐ›๋Š”๋‹ค.

https://github.com/cdarlint/winutils

์œ„ ๋งํฌ์—์„œ ๋‹ค์šด๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ๋‹ค์šด๋ฐ›์€ ํ•˜๋‘ก์˜ ๋ฒ„์ „์— ๋งž๋Š” ํŒŒ์ผ๋กœ ๋‹ค์šด๋ฐ›์œผ๋ฉด ๋œ๋‹ค.

winutils.exe

 

 

 

(3) ํŒŒ์ผ ๊ฒฝ๋กœ ์„ค์ • ๋ฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

๋‹ค์šด๋ฐ›์€ ์ŠคํŒŒํฌ ์••์ถ•ํŒŒ์ผ์€ C:/Spark ์œ„์น˜์— ์˜ฎ๊ฒจ์„œ ์••์ถ•์„ ํ•ด์ œํ•ด์ฃผ์—ˆ๊ณ ,

winutils.exe ํŒŒ์ผ์€ C:/Hadoop/bin ์œ„์น˜์— ์˜ฎ๊ฒจ์ฃผ์—ˆ๋‹ค.

Spark
winutils.exe

 

 

ํŒŒ์ผ๋“ค์„ ์˜ฎ๊ฒจ์ฃผ์—ˆ๋‹ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋กœ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์œˆ๋„์šฐ10 ๊ธฐ์ค€์œผ๋กœ ์„ค์ •>์‹œ์Šคํ…œ>์ •๋ณด>๊ณ ๊ธ‰ ์‹œ์Šคํ…œ ์„ค์ • ์„ ํด๋ฆญํ•ด ๋‚˜ํƒ€๋‚œ ์ฐฝ์—์„œ ๊ณ ๊ธ‰>ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ฅผ ํด๋ฆญํ•œ๋‹ค.

๋‹ค์Œ์œผ๋กœ ์‚ฌ์šฉ์ž ๋ณ€์ˆ˜์™€ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ ์ค‘์— ์‹œ์Šคํ…œ ๋ณ€์ˆ˜์— SPARK_HOME ๊ณผ HADOOP_HOME ์„ ์„ค์ •ํ•œ๋‹ค.

SPARK_HOME ์€ C:/Spark/(์••์ถ• ํ’€์—ˆ๋˜ ํด๋”), HADOOP_HOME ์€ C:/Hadoop ์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

์ด ๋•Œ JAVA_HOME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด ์ด ๋ณ€์ˆ˜๋„ ์ถ”๊ฐ€ํ•œ๋‹ค.

๋ณ€์ˆ˜ ์ถ”๊ฐ€๋Š” ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ>๋ณ€์ˆ˜๋ช… ์„ค์ •, ๊ฒฝ๋กœ ์„ค์ • ์œผ๋กœ ํ•˜๋ฉด ๋œ๋‹ค.

ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •
์ƒˆ ๋ณ€์ˆ˜ ์„ค์ •

 

๋งˆ์ง€๋ง‰์œผ๋กœ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜์˜ Path ๋ณ€์ˆ˜์— ๋“ค์–ด๊ฐ€์„œ (๋ณ€์ˆ˜ ์„ ํƒํ•œ ํ›„ ํŽธ์ง‘ ํด๋ฆญ)

%SPARK_HOME%\bin , %HADOOP_HOME%\bin ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

์ด ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ž๋ฐ”๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด %JAVA_HOME%\bin ์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

Path ๋ณ€์ˆ˜์— ๋‚ด์šฉ ์ถ”๊ฐ€

 

 

 

(4) ์„ค์น˜ ํ™•์ธ

์ด์ œ ์„ค์น˜๋Š” ๋ชจ๋‘ ์™„๋ฃŒ๋๊ณ  ์ž˜ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋„๋ก ํ•˜์ž!

๋‚˜๋Š” ์ฃผ๋กœ pyspark ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— pyspark ๋ฅผ ์‹คํ–‰ํ•ด๋ณด์•˜๋‹ค.

์ฒ˜์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ 'Python ์ง€์ •๋œ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.' ๋ผ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋–ด๋Š”๋ฐ ์ด๋Š” ์„ค์น˜ ์ „์— ๋ฏธ๋ฆฌ ์—ด์–ด๋’€๋˜ cmd ์ฐฝ์— ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์„œ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜์˜€๋‹ค.

๊ธฐ์กด์— ์—ด์–ด๋’€๋˜ cmd ์ฐฝ์„ ๊ผญ! ๋‹ซ๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•œ ํ›„ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜์ž.

pyspark ์‹คํ–‰

 

 

 

 

 

์ด๋ ‡๊ฒŒ ์ŠคํŒŒํฌ ํ™˜๊ฒฝ ๊ตฌ์ถ•์ด ๋ชจ๋‘ ๋๋‚ฌ๊ณ , csv ํŒŒ์ผ๋„ ํ•œ ๋ฒˆ ๋ถˆ๋Ÿฌ์™€๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

ํŒŒ์ด์ŠคํŒŒํฌ ์‰˜์— ๋‹ค์Œ ๋ช…๋ น๋“ค์„ ์ฐจ๋ก€๋กœ ์ž…๋ ฅํ•œ๋‹ค.

>>> from pyspark.sql import HiveContext
>>> from pyspark.sql.types import *
>>> from pyspark.sql import Row
>>> csv_data = spark.read.csv("C:/movies.csv")

๋งˆ์ง€๋ง‰์œผ๋กœ csv_data.show() ๋ช…๋ น์„ ์‹คํ–‰ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•ด๋ณด์•˜๋‹ค.

 

 

 

์„ค์น˜๊ฐ€ ์ž˜ ๋˜์—ˆ๊ณ  ๋ฐ์ดํ„ฐ๋„ ์ž˜ ๋ถˆ๋Ÿฌ์™€์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์œผ๋‹ˆ ๋‹ค์Œ์—” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋กœ ์ด๊ฒƒ์ €๊ฒƒ ํ•ด ๋ณผ ์ƒ๊ฐ์ด๋‹ค!

 

 

 

728x90
Comments