Study Anything ๐Ÿง

[PySpark] ์ฅฌํ”ผํ„ฐ ๋…ธํŠธ๋ถ์œผ๋กœ PySpark ์‚ฌ์šฉํ•˜๊ธฐ ๋ณธ๋ฌธ

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

[PySpark] ์ฅฌํ”ผํ„ฐ ๋…ธํŠธ๋ถ์œผ๋กœ PySpark ์‚ฌ์šฉํ•˜๊ธฐ

์†” 2022. 2. 25. 23:57

์ €๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” windows10 ์— ์ŠคํŒŒํฌ๋ฅผ ์„ค์น˜ํ•ด๋ณด์•˜๋‹ค.

๋‹ค๋งŒ cmd ์ฐฝ์—์„œ ๋ชจ๋“  ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ธฐ์—๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ์–ด์„œ (์ž‘์—… ๋ช…๋ น์–ด ๋“ฑ ๋‚ด์šฉ ์ €์žฅ์— ๋ถˆํŽธ)

์•ž์œผ๋กœ๋Š” ์ฅฌํ”ผํ„ฐ ๋…ธํŠธ๋ถ์œผ๋กœ ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์—…ํ™˜๊ฒฝ์„ ์„ธํŒ…ํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€๋ณด์•˜๋‹ค.

์ฅฌํ”ผํ„ฐ ๋…ธํŠธ๋ถ๊ณผ ์•„๋‚˜์ฝ˜๋‹ค๋Š” ์ด๋ฏธ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‘ก์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค. (ํ•˜๋‘ก ์„ค์น˜ ๋ฐฉ๋ฒ•์€ ์ด์ „ ํฌ์ŠคํŠธ ์ฐธ๊ณ )

์ฆ‰, ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ ๋‹ค๋ฃจ๋Š” ๋‚ด์šฉ์€ ์ŠคํŒŒํฌ์™€ ํ•˜๋‘ก์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋‚ด์šฉ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

 

 

 

(1) ํ•˜๋‘ก ์‹คํ–‰

cmd ์ฐฝ์„ ์—ด์–ด ํ•˜๋‘ก ์„ค์น˜ํŒŒ์ผ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•˜๊ณ  ๋‹ค์Œ ๋ช…๋ น์–ด๋“ค์„ ์ฐจ๋ก€๋กœ ์‹คํ–‰ํ•œ๋‹ค.

์ด ๋•Œ 'hdfs namenode -format' ๋ช…๋ น์€ ํ•  ๋•Œ๋งˆ๋‹ค ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋งจ ์ฒ˜์Œ์—๋งŒ ์‹คํ–‰ํ•ด๋„ ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

๋งŒ์•ฝ ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ณ  'Re-format filesystem in Storage Directory root= C:\(์ƒ๋žต)\namenode; location= null ? (Y or N)' ๋ผ๋Š” ์งˆ๋ฌธ์ด ๋œจ๋ฉด n ์„ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค. (์œ„์น˜๊ฐ€ null์ด๋ƒ๋Š” ์˜๋ฏธ)

...> cd C:/Hadoop/Hadoop-3.2.2

C:\Hadoop\Hadoop-3.2.2> cd etc/hadoop

C:\Hadoop\Hadoop-3.2.2\etc\hadoop> hadoop-env

C:\Hadoop\Hadoop-3.2.2\etc\hadoop> hdfs namenode -format

 

์ด ๋‹ค์Œ์œผ๋กœ ๋„ค์ž„๋…ธ๋“œ, ๋ฐ์ดํ„ฐ๋…ธ๋“œ, yarn ๋ฐ๋ชฌ๋“ค์„ ์‹คํ–‰ํ•ด ํ•˜๋‘ก ํ™˜๊ฒฝ์„ ๊ตฌ๋™ํ•œ๋‹ค.

์ด๋“ค์„ ์‹คํ–‰ํ•˜๊ณ  ํ™•์ธํ•˜๋Š” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด์ „ ํฌ์ŠคํŠธ ํ›„๋ฐ˜๋ถ€์— ๋‹ค๋ค„๋†“์•˜๋‹ค.

C:\Hadoop\Hadoop-3.2.2\etc\hadoop> cd ../../sbin

C:\Hadoop\Hadoop-3.2.2\sbin> start-dfs

C:\Hadoop\Hadoop-3.2.2\sbin> start-yarn

 

ํ•˜๋‘ก์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์—ˆ๋‹ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋“ค์„ ์ž…๋ ฅํ•ด ํ•˜๋‘ก ์ €์žฅ์†Œ์— ๋””๋ ‰ํ† ๋ฆฌ์™€ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

mkdir ์€ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ช…๋ น์–ด, put ์€ ๋””๋ ‰ํ† ๋ฆฌ์— ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

 

 

 

(2) ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ž…๋ ฅ

์ฅฌํ”ผํ„ฐ ๋…ธํŠธ๋ถ์—์„œ ํŒŒ์ด์ŠคํŒŒํฌ(PySpark)๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.

('์„ค์ • > ์‹œ์Šคํ…œ > ์ •๋ณด > ๊ณ ๊ธ‰ ์‹œ์Šคํ…œ ์„ค์ • > ๊ณ ๊ธ‰ > ํ™˜๊ฒฝ๋ณ€์ˆ˜'๋ฅผ ํ†ตํ•˜๊ฑฐ๋‚˜ ์œˆ๋„์šฐ ๊ฒ€์ƒ‰์ฐฝ์— 'ํ™˜๊ฒฝ๋ณ€์ˆ˜'๋ฅผ ์ž…๋ ฅํ•œ ํ›„ '์‹œ์Šคํ…œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํŽธ์ง‘'์„ ํด๋ฆญํ•ด ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ฐฝ์„ ๋„์šด๋‹ค.)

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ค‘ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ ๋ถ€๋ถ„์—์„œ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•œ ํ›„ ๋‘ ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

๋ณ€์ˆ˜ ์ด๋ฆ„ PYSPARK_DRIVER_PYTHON PYSPARK_DRIVER_PYTHON_OPTS
๋ณ€์ˆ˜ ๊ฐ’ jupyter notebook

 

์‚ฌ์šฉ์ž ๋ณ€์ˆ˜๋‚˜ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ ์ค‘ Path ๋ณ€์ˆ˜ ๋‚ด์šฉ์— ์•„๋‚˜์ฝ˜๋‹ค๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š”์ง€๋„ ํ™•์ธํ•œ๋‹ค.

 

 

 

(3) ์ฅฌํ”ผํ„ฐ ๋…ธํŠธ๋ถ ์‹คํ–‰

์ฅฌํ”ผํ„ฐ ๋…ธํŠธ๋ถ์„ ์‹คํ–‰ํ•˜๊ณ  ์ƒˆ๋กœ์šด ํŒŒ์ด์ฌ ๋…ธํŠธ๋ถ ํŒŒ์ผ์„ ๋งŒ๋“  ๋’ค ๋‹ค์Œ์˜ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

 

[1] findspark ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

pip install findspark

 

[2] findspark ์ž„ํฌํŠธ ํ›„ ์ดˆ๊ธฐํ™”

import findspark as fs

fs.init()

 

[3] ์ŠคํŒŒํฌ ์„ธ์…˜ ์ƒ์„ฑ

# spark ์ƒ์„ฑ

import pyspark
from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()

 

[4] ํ•˜๋‘ก ์ €์žฅ์†Œ์—์„œ ์ŠคํŒŒํฌ๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

localhost ๋’ค์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋Š” ๊ฐ์ž์˜ ํ•˜๋‘ก ํ™˜๊ฒฝ์— ๋งž๋Š” ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.

data = spark.read.csv("hdfs://localhost:9000/test/movies.csv", header="true", inferSchema="true")

 

[5] ๋ฐ์ดํ„ฐ ํ™•์ธ

๋ช…๋ น์„ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ๋‹ค์Œ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ๋‚˜์˜ค๋ฉด ์„ฑ๊ณต์ด๋‹ค!

data.show()

 

 

 

์ด์ œ ํ•˜๋‘ก๊ณผ ์ŠคํŒŒํฌ๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋ชจ๋“  ์ค€๋น„๊ฐ€ ๋๋‚ฌ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„๋กœ๋Š” ๋ถ„์„ํ•  ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์œผ๊ณ  ์ŠคํŒŒํฌ๋ฅผ ์‚ฌ์šฉํ•ด ์ฒ˜๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

 

728x90
Comments