Study Anything ๐ง
[Spark] ์คํํฌ ์ค์นํ๊ณ csv ํ์ผ ๋ถ๋ฌ์ค๊ธฐ ๋ณธ๋ฌธ
[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
์ ๋งํฌ์์ ๋ค์ด๋ฐ์ ์ ์๊ณ , ๋ค์ด๋ฐ์ ํ๋ก์ ๋ฒ์ ์ ๋ง๋ ํ์ผ๋ก ๋ค์ด๋ฐ์ผ๋ฉด ๋๋ค.
(3) ํ์ผ ๊ฒฝ๋ก ์ค์ ๋ฐ ํ๊ฒฝ ๋ณ์ ์ค์
๋ค์ด๋ฐ์ ์คํํฌ ์์ถํ์ผ์ C:/Spark ์์น์ ์ฎ๊ฒจ์ ์์ถ์ ํด์ ํด์ฃผ์๊ณ ,
winutils.exe ํ์ผ์ C:/Hadoop/bin ์์น์ ์ฎ๊ฒจ์ฃผ์๋ค.
ํ์ผ๋ค์ ์ฎ๊ฒจ์ฃผ์๋ค๋ฉด ๋ค์ ๋จ๊ณ๋ก๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํด์ฃผ๋ฉด ๋๋ค.
์๋์ฐ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 ์ ์ถ๊ฐํด์ค๋ค.
(4) ์ค์น ํ์ธ
์ด์ ์ค์น๋ ๋ชจ๋ ์๋ฃ๋๊ณ ์ ์ค์น๋์๋์ง ํ์ธํด๋ณด๋๋ก ํ์!
๋๋ ์ฃผ๋ก pyspark ๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ pyspark ๋ฅผ ์คํํด๋ณด์๋ค.
์ฒ์ ๋ช ๋ น์ ์คํํ์ ๋ 'Python ์ง์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.' ๋ผ๋ ์ค๋ฅ๊ฐ ๋ด๋๋ฐ ์ด๋ ์ค์น ์ ์ ๋ฏธ๋ฆฌ ์ด์ด๋๋ cmd ์ฐฝ์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์ ๋ฐ์ํ ์ค๋ฅ์๋ค.
๊ธฐ์กด์ ์ด์ด๋๋ cmd ์ฐฝ์ ๊ผญ! ๋ซ๊ณ ๋ค์ ์คํํ ํ ๋ช ๋ น์ ์ํํ๋๋ก ํ์.
์ด๋ ๊ฒ ์คํํฌ ํ๊ฒฝ ๊ตฌ์ถ์ด ๋ชจ๋ ๋๋ฌ๊ณ , 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() ๋ช ๋ น์ ์คํํด ๋ฐ์ดํฐ๋ฅผ ํ์ธํด๋ณด์๋ค.
์ค์น๊ฐ ์ ๋์๊ณ ๋ฐ์ดํฐ๋ ์ ๋ถ๋ฌ์์ง๋ ๊ฒ์ ํ์ธํ์ผ๋ ๋ค์์ ๋ค์ํ ๋ฐ์ดํฐ๋ก ์ด๊ฒ์ ๊ฒ ํด ๋ณผ ์๊ฐ์ด๋ค!
'์คํฐ๋ > Data Analytics' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[PySpark] ์ฅฌํผํฐ ๋ ธํธ๋ถ์ผ๋ก PySpark ์ฌ์ฉํ๊ธฐ (0) | 2022.02.25 |
---|---|
[Hadoop] YARN - ๋ฆฌ์์ค ๊ด๋ฆฌ์์ ์ค์ผ์ค๋ฌ (0) | 2022.02.24 |
[Hadoop] ํ๋ก ์ค์นํ๊ณ ํ์ธํด๋ณด๊ธฐ (0) | 2022.02.23 |
[Hadoop] ํ๋ก๊ณผ ๋ถ์ฐ ํ์ผ ์์คํ (0) | 2022.02.14 |
[Pandas] ํ๋ค์ค์ ์๋ฆฌ์ฆ ๊ธฐ๋ณธ (0) | 2022.02.06 |