Spark ํ๋ก๊ทธ๋จ์ ์์์ SparkSession์ ๋ง๋๋ ๊ฒ์ด๋ค.
Spark Session์ ํตํด Spark์ด ์ ๊ณตํด์ฃผ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ค.
from pyspark.sql import SparkSession
# SparkSession์ Singleton์ด๋ค.
spark = SparkSession.builder.master("local[*]").appName('PySpark Tutorial').getOrCreate()
spark.stop()
Spark SQL Engine์ด ์ค์ฌ์ผ๋ก ๋์๊ฐ๋ค.
pyspark.sql.SparkSession
- Spark APP์ ์ํธ๋ฆฌ ํฌ์ธํธ
- Spark ์ปจํ ์คํธ์ SQL ์ปจํ ์คํธ๋ฅผ ๋ชจ๋ ํฌํจํ๊ณ ์๋ค.
- DataFrame, RDD๋ฑ์ ์์ฑํ ์ ์๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
pyspark.sql.DataFrame
- Spark์ ๋ถ์ฐ ๋ฐ์ดํฐ ์ปฌ๋ ์
- ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ(ํ+์ด)์ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๋ค.
- SQL ์ฟผ๋ฆฌ, ๋ฐ์ดํฐ ๋ณํ, ํํฐ๋ง ๋ฑ์ ์์ ์ํ์ด ๊ฐ๋ฅํ๋ค.
pyspark.sql.Column
- DataFrame์ ์ด์ ๋ํ๋ด๋ ๊ฐ์ฒด
- ์ฐ์ ์ฐ์ฐ, ์กฐ๊ฑด๋ฌธ, ํจ์ ์ ์ฉ ๋ฑ ๋ค์ํ ์์ ์ํ์ด ๊ฐ๋ฅํ๋ค.
pyspark.sql.Row
- DataFrame์ ํ์ ๋ํ๋ด๋ ๊ฐ์ฒด์ด๋ค.
- ํ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ณ ์กฐ์์ด ๊ฐ๋ฅํ๋ค.
pyspark.sql.functions
SparkSQL์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ค์ํ ํจ์๋ฅผ ์ ๊ณตํ๋ค.
- ๋ฌธ์์ด ์ฒ๋ฆฌ, ๋ ์ง ์ฒ๋ฆฌ, ์ํ ํจ์ ๋ฑ์ ํฌํจํ๋ค.
pyspark.sql.types
SparkSQL์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ํ์ ์ ์ ์ํ๋ค.
pyspark.sql.Window
- ์๋์ฐ ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๊ฐ์ฒด์ด๋ค.
- ํ ๊ธฐ๋ฐ ๊ณ์ฐ์ ์ํํ ๋ ์ฌ์ฉํ๋ค. (ex: ์์, ๋์ ํฉ๋ฑ๋ฑ)
executor ๋ณ ๋ฉ๋ชจ๋ฆฌ : spark.executor.memory (๊ธฐ๋ณธ : 1gb)
executor ๋ณ CPU๊ฐ์ : spark.executor.cores (YARN์์๋ ๊ธฐ๋ณธ๊ฐ 1)
driver ๋ฉ๋ชจ๋ฆฌ : spark.driver.memory (๊ธฐ๋ณธ : 1gb)
Shuffle ํ Partition์ ์ : spark.sql.shuffle.partitions (๊ธฐ๋ณธ : ์ต๋ 200)
์ฌ์ฉํ๋ Resource Manager์ ๋ฐ๋ผ ํ๊ฒฝ๋ณ์๊ฐ ๋ง์ด ๋ฌ๋ผ์ง๋ค.
ํ๊ฒฝ๋ณ์
$SPARK_HOME/conf/spark_defaults.conf
2๊ฐ๋ ๋ณดํต Spark Cluster Admin์ด ๊ด๋ฆฌํ๋ค.
spark-submit ๋ช ๋ น์ ์ปค๋งจ๋๋ผ์ธ ํ๋ผ๋ฏธํฐ
SparkSession์ ๋ง๋ค๋ ์ง์
-> SparkConf
๋ง์ฝ ํ๊ฒฝ ์ค์ ์ด ์ถฉ๋๋ ๊ฒฝ์ฐ SparkConf -> Spark-submit -> $SPARK_HOME -> ํ๊ฒฝ๋ณ์ ์์์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค.
from pyspark.sql import SparkSession
spark = SparkSession.builder\
.master("local[*]")\
.appName('PySpark Tutorial')\
.config("spark.some.config.option1", "some-value") \
.config("spark.some.config.option2", "some-value") \
.getOrCreate()
from pyspark.sql import SparkSession
from pyspark import SparkConf
# SparkConf ๊ฐ์ฒด ์์ฑ
conf = SparkConf()
# set ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ง์
conf.set("spark.app.name", "PySpark Tutorial")
conf.set("spark.master", "local[*]")
spark = SparkSession.builder\
.config(conf=conf) \
.getOrCreate()

spark.read(DataFrameReader)๋ฅผ ์ฌ์ฉํ์ฌ DataFrame์ผ๋ก ๋ก๋ํ๋ค.
DataFrame.write(DataFrameWriter)์ ์ฌ์ฉํ์ฌ DataFrame์ ์ ์ฅํ๋ค.
๋ง์ด ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ์์ค