μλ νμΈμ ν¬λ¦¬λ₯μ€μλΌμ€μ λλ€.
μ€νν¬λ₯Ό 곡λΆνκΈ° μμνλ©΄μ 곡λΆν λ΄μ©λ€μ μ‘°κΈμ© μ λ¦¬ν΄ λ³Όλ €κ³ ν©λλ€.
μ λ λ§₯λΆ m1 μμ΄λ₯Ό μ¬μ©νκ³ μμΌλ©°, μ€νν¬ μ€μΉ λ²μ μ 3.3.1 μ λλ€.
νμ΄μ¬
μ λ ν°λ―Έλμμ pyspark νΉμ Sparkμ bin ν΄λμμ pyspark λͺ λ Ήμ΄λ‘ λ€μκ³Ό κ°μ νλ©΄μ μ€νμμΌ°μ΅λλ€.
μ΄ νλ©΄μμ μ ν¬λ μ€νν¬λ₯Ό μ΄μ©ν΄ λ°μ΄ν° λΆμμ μνν μ μμ΅λλ€.
μ λ λ°°μκ°λ μ μ₯μ΄λ κ°λ¨νκ² 2022 μμ¦ K리그 λμ μμ κΈ°λ‘μ κ°μ§κ³ λ°μ΄ν°λ₯Ό λ€λ€λ³΄λλ‘ νκ² μ΅λλ€.
μ λ κ·Έλ₯ μΉνμ΄μ§μ κΈμ 볡μ¬ν΄μ νλμ csv νμΌλ‘ λ§λ€μμ΅λλ€.
λ°μ΄ν°κ° μ€λΉλμλ€λ©΄ ν λ² μ€νν¬μμ λ°μ΄ν°λ₯Ό λΆλ¬μ€λλ‘ νκ² μ΅λλ€.
μ€νν¬μμ λ°μ΄ν°λ₯Ό λΆλ¬μ¬ λλ λ€μκ³Ό κ°μ λͺ λ Ήλ¬Έμ μ¬μ©νλλ° μμΈν κ±°λ λ€μμ μμΈν λ€λ€λ³΄λλ‘ νκ² μ΅λλ€.
data = spark.read.format() # λΆλ¬μ¬ λ°μ΄ν°μ νμ
.option("header", "true") # νμΌ λ΄ μ»¬λΌ μ΄λ¦ μ¬μ©
.option("inferSchema", "true") # μ€ν€λ§λ₯Ό μΆλ‘
.load() # λΆλ¬μ¬ νμΌ κ²½λ‘
data.show() # λΆλ¬μ¨ λ°μ΄ν°λ₯Ό μΆλ ₯νλ λͺ
λ Ήμ΄. κ΄νΈ μμ μΆλ ₯νκ³ μΆμ κ°μλ₯Ό λ£μΌλ©΄ λλ€.
μ λ λ€νν λ°μ΄ν°κ° μ λλ‘ μΆλ ₯μ΄ λμμ΅λλ€.
컬λΌμ΄ λ§μμ 보기 νλλ μνλ 컬λ¬λ§ 골λΌμ μΆλ ₯ν΄λ³΄κ² μ΅λλ€.
data.select() # κ΄νΈ μμ μ νν 컬λΌλͺ
μ μ μΌλ©΄ λλ€.
μ¬κΈ°μ μ£Όμν μ μ select λͺ λ Ήμ΄λ§ μ κ³ μν°λ₯Ό λλ₯΄λ©΄ μνλ ννλ‘ μΆλ ₯μ λμ§ μμ΅λλ€.
κ·Έ μ΄μ λ μ€νν¬κ° μλνλ μ리μ μμ΅λλ€. μ κΉ μ€λͺ νλ©΄ μ€νν¬μ μ°μ°μ νΈλμ€ν¬λ©μ΄μ κ³Ό μ‘μ μΌλ‘ ꡬλΆλλ©°,
νΈλμ€ν¬λ©μ΄μ μ°μ°μ μ¦μ κ²°κ³Όκ° κ³μ°λλ κ²μ΄ μλλΌ κ³λ³΄(lineage)λΌ λΆλ¦¬λ ννλ‘ κΈ°λ‘λλ€κ° μ‘μ μ°μ°μ λ§λλ©΄ λ¦κ² μ€νμ΄ λ©λλ€.
- νΈλμ€ν¬λ§€μ΄μ : orderBy(), groupBy(), filter(), select(), join()
- μ‘μ : show(), take(), count(), collect(), save()
μ€νν¬κ° μ΄λ° μ°μ°μ νλ μ΄μ λ μ₯μ κ° λ°μνμ λ κΈ°λ‘λ κ³λ³΄λ₯Ό λ°λΌκ°λ©΄ μ½κ² λ³΅κ΅¬κ° κ°λ₯νλ€λ μ κ³Ό μ€νμ νλ°λΆμ νΈλμ€ν¬λ©μ΄μ μ λ ν¨μ¨μ μΌλ‘ μ€νν μ μλ€λ μ μ λλ€.
μ΄μ΄μ μ λ νλ³ λμ μ 보λ₯Ό μΆλ ₯νμ΅λλ€.
μ λΆμ μ‘°κ·μ± μ μκ° λμ μμ 1μμ§λ§ 30λͺ μ μ μλ€ μ€μμλ μΈμ°μ΄ κ°μ₯ λ§μ λμ μ κΈ°λ‘νμ΅λλ€.
data.groupyBy() # κ·Έλ£Ήνν μ»¬λΌ μ΄λ¦ μ€μ
.sum() # μ°μ°μ μ§νν μ»¬λΌ μ€μ
.orderBy() # μ λ ¬ν μ»¬λΌ μ€μ , ascending = Trueλ‘ νλ©΄ μ€λ¦μ°¨μμΌλ‘ μ λ ¬λλ€.
.show()
μ‘°κΈ λ μμΈν 보기 μν΄ λμ μΈμ λμκ³Ό μν , μ€νμ¬μ΄λ 컬λΌλ μΆκ°νμ΅λλ€. μ λ ¬μ λμ κΈ°μ€μ λλ€.
μ΄λ²μλ μν νμκ° 70λ² μ΄μμΈ μ μλ€λ§ μΆλ ₯νλλ‘ μ‘°κ±΄μ λ£μμ΅λλ€ .
data.where() # λ³μλͺ
.컬λΌλͺ
μ μ΄μ©ν΄ 쑰건μ μ€μ
.show()
쑰건μ νλ λ μΆκ°ν΄ μν μ 70λ² μ΄μνμ§λ§ λμ μ 15λ² μ΄νμΈ μ μλ€μ μΆλ ₯νμ΅λλ€.
μ§κΈκΉμ§λ ν°λ―Έλ μ°½μμ μ½λλ₯Ό νλνλ μννλ€λ©΄ μ΄λ²μλ νμ΄μ¬ νμΌλ‘ κ°μ κ²°κ³Όλ₯Ό μΆλ ₯ν΄λ³΄λ λ°©λ²μ λλ€.
λ¨Όμ λ€μκ³Ό κ°μ μ½λλ₯Ό k-league.py νμΌλ‘ μμ±ν©λλ€.
# νμν λΌμ΄λΈλ¬λ¦¬
import sys
from pyspark.sql import SparkSession
# μ½λ μμ
if __name__ == "__main__":
# spark-submitμ ν λ μΆκ°μ μΌλ‘ νμΌ κ²½λ‘λ₯Ό μ
λ ₯ μ ν λ μΆλ ₯λλ κ²½κ³ λ¬Έ
if len(sys.argv) != 2:
print("λ€μ μλν΄ μ£ΌμΈμ.")
sys.exit(-1)
# SparkSession κ°μ²΄λ₯Ό μμ± > pyspark μ°½μ΄λ spark-shellμμλ νμX
spark = (SparkSession
.builder
.appName("k-league")
.getOrCreate())
# ν°λ―Έλ μ°½μμ μ
λ ₯ λ°μ νμΌ κ²½λ‘
file_path = sys.argv[1]
# λ°μ΄ν° λΆλ¬μ€κΈ°
data = (spark.read.format("csv")
.option("header", "true")
.option("inferSchema", "true")
.load(file_path))
data.show(10)
data2 = data.select("μμ", "μ μλͺ
", "ν", "λμ ", "μν
", "μΆμ₯", "κ²½κΈ°λΉ κΈ°λ‘")
data2.show(10)
data3 = data.groupBy("ν").sum("λμ ").orderBy("sum(λμ )", ascending = False)
data3.show()
data4 = data.groupBy("ν").sum("λμ ", "λμ", "μν
", "μ€νμ¬μ΄λ").orderBy("sum(λμ )", ascending = False)
data4.show()
data5 = data.where(data.μν
>= 70)
data5.show()
data6 = data.where(data.μν
>= 70).where(data.λμ < 15)
data6.show()
# SparkSession μ’
λ£
spark.stop()
Sparkμ bin ν΄λμμ spark-submit μ μ΄μ©ν΄ νμ΄μ¬ νμΌμ μ€νμν΅λλ€.
(μ λ 미리 νκ²½λ³μμ $SPARK_HOMEμ μ§μ ν΄μ€μ $SPARK_HOME/bin/spark-submitμ μ¬μ©ν μ μμ΅λλ€.)
sparkκ²½λ‘/bin/spark-submit νμ΄μ¬ νμΌ κ²½λ‘
λ§μ½ νμ΄μ¬ νμΌ κ²½λ‘ λ€μ csv νμΌ κ²½λ‘λ₯Ό λ£μ§ μμΌλ©΄ νμ΄μ¬ νμΌμμ μ€μ ν λλ‘ λ€μκ³Ό κ°μ΄ μΆλ ₯λ©λλ€.
csv νμΌ κ²½λ‘κΉμ§ λ£μ΄μ μ€νμν€λ©΄ λ€μκ³Ό κ°μ΄ μ°¨λ‘λλ‘ μΆλ ₯λ©λλ€.
μΆλ ₯λλ μμ€μ μ μ²λΌ κΉλνκ² μΆλ ₯λμ§ μκ³ INFO λ‘κ·Έλ€μ΄ μμ² λ§μ΄ μΆλ ₯λμλ λΆλ€μ΄ μλ€λ©΄
μ΄ λΈλ‘κ·Έλ₯Ό μ°Έμ‘°νμ μ INFO λ‘κ·Έκ° μΆλ ₯λμ§ μλλ‘ μ€μ ν΄ μ£Όμλ©΄ λ©λλ€.
λν, μ λλ‘ ν κ±° κ°μλ° μ€νμ΄ μ λμ λ€λ©΄ μ μ²λΌ pyspark λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉνμ§ μμΌμ 건μ§
νμΈν΄λ³΄μλ©΄ λ κ² κ°μ΅λλ€.
μ¬κΈ°κΉμ§λ νμ΄μ¬μ μ΄μ©ν΄ μ€νν¬λ₯Ό μ¬μ©ν΄λ³΄λ λ°©λ²μ΄μμ΅λλ€.
μ€μΉΌλΌλ₯Ό μ¬μ©νκ³ μΆμΌμ λΆλ€μ pysparkλμ spark-shellμ ν°λ―Έλμ μ λ ₯νμλ©΄ λ©λλ€.
μ€μΉΌλΌλ₯Ό μ΄μ©ν λ νμ΄μ¬κ³Ό λ€λ₯Έ κ°μ₯ ν° λΆλΆμ λ³μλ₯Ό μμ±ν λ val λ³μλͺ μ΄ λλ€λ κ²μ λλ€.
μ€μΉΌλΌλ₯Ό μ΄μ©ν λΆλΆμ μ‘°κΈ λ 곡λΆν΄μ λ€μ κΈλΆν°λ κ°μ΄ λ€λ£° μ μλλ‘ νκ² μ΅λλ€.
κ°μ¬ν©λλ€.
'μ€νν¬(Spark)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ€νν¬ λ°μ΄ν° νλ μ(μμ±, μ€ν€λ§) (0) | 2023.01.14 |
---|