
๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ Spark ๋ชจ๋
RDD ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ณํํ ํ ์ฒ๋ฆฌ ๊ฐ๋ฅ
์ธ๋ถ ๋ฐ์ดํฐ(์คํ ๋ฆฌ์ง, ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค)๋ ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ณํํ ํ ์ฒ๋ฆฌ ๊ฐ๋ฅ
๋ฐ์ดํฐํ๋ ์์ ํ
์ด๋ธ์ด ๋๊ณ (ํน์ ํจ์ ์ฌ์ฉ) ๊ทธ ๋ค์๋ถํฐ SQL ํจ์๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅ
์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐํ๋ ์ ์์ฑ
SparkSession์ readํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ
์ด๋ธ ํน์ SQL๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํฐ ํ๋ ์์ผ๋ก ์ฝ์ด์ด
Redshift ์ฐ๊ฒฐ ์์
SparkSession์ ๋ง๋ค ๋ ์ธ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ง๋ JDBC jar์ ์ง์
SparkSession์ readํจ์๋ฅผ ํธ์ถ
-๋ก๊ทธ์ธ ๊ด๋ จ ์ ๋ณด์ ์ฝ์ด์ค๊ณ ์ ํ๋ ํ
์ด๋ธ ํน์ SQL์ ์ง์
-๊ฒฐ๊ณผ๊ฐ ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ฆฌํด๋จ
์์ ๋ฆฌํด๋ ๋ฐ์ดํฐํ๋ ์์ ํ
์ด๋ธ ์ด๋ฆ ์ง์
SparkSession์ sqlํจ์๋ฅผ ์ฌ์ฉ
from pyspark.sql import SparkSession
spark = SparkSession\
.builder\
.appName("Python Spark SQL basic example")\
.config("spark.jars", "/usr/local/lib/python3.6/dist-packages/pyspark/jars/RedshiftJDBC42-no-awssdk-1.2.20.1043.jar") \
.getOrCreate()
df_user_session_channel = spark.read \
.format("jdbc") \
.option("driver", "com.amazon.redshift.jdbc42.Driver") \
.option("url", "jdbc:redshift://learnde.cduaw970ssvt.ap-northeast-2.redshift.amazonaws.com:5439/prod?user=guest&password=Guest1!*") \
.option("dbtable", "raw_data.user_session_channel") \
.load()
namegender_df.createOrReplaceTempView("namegender")
namegender_group_df = spark.sql("
SELECT gender, count(1) FROM namegender GROUP BY 1
")
print(namegender_group_df.collect())