μ€νν¬ λ°μ΄ν°νλ μμ νλ€μ€ λ°μ΄ν°νλ μμ μν₯μ λ°μ λ§λ€μ΄μ Έ μ΄λ¦ μλ μΉΌλΌκ³Ό μ€ν€λ§λ₯Ό κ°μ§ λΆμ° μΈλ©λͺ¨λ¦¬ ν μ΄λΈμ²λΌ λμνλ€.
μ€ν€λ§ Schema
μ€ν€λ§λ λ°μ΄ν°νλ μμ μΉΌλΌ μ΄λ¦κ³Ό λ°μ΄ν° νμ μ μ μν κ²μ΄λ€. μ€ν€λ§λ λ°μ΄ν°λ₯Ό μ½μ΄λ€μΌ λ μλμΌλ‘ μ μλκ² ν μλ μμ§λ§, 미리 μ€ν€λ§λ₯Ό μ μνλ©΄ λ€μκ³Ό κ°μ μ₯μ μ΄ μλ€.
π‘ μ€νν¬κ° λ°μ΄ν° νμ μ μΆμΈ‘ν΄μΌ νλ μ± μμ λμ΄ μ€μΌλ‘μ¨, μ€ν€λ§ νμ μ μν λ³λμ μ‘μ λ§λλ κ²μ λ°©μ§νλ€.
π‘ λ°μ΄ν°κ° μ€ν€λ§μ λ§μ§ μλ κ²½μ° μ‘°κΈ°μ λ¬Έμ λ₯Ό λ°κ²¬ν μ μλ€.
μ€ν€λ§λ₯Ό μ μνλ λ°©λ²μ λκ°μ§κ° μλ€. 첫 λ²μ§Έλ pyspark.sql.typesμμ λ°μ΄ν° νμ μ λΆλ¬μ νλ‘κ·Έλλ° μ€νμΌλ‘ μ μνλ κ²μ΄λ€. λ€μκ³Ό κ°μ΄ κ° νλμ μ΄λ¦κ³Ό Typeμ μ μν΄ StructFieldμ μΈμλ‘ μ£Όκ³ , μ΄λ€μ λ¬Άμ΄μ StructTypeμ μ λ¬νλ©΄ λλ€. StructFieldμ μΈλ²μ§Έ μΈμλ null κ°μ νμ©ν κ²μΈμ§λ₯Ό μλ―Ένλ€.
from pyspark.sql.types import StructType, StructField, StringType, IntegerType
schema = StructType(
[
StructField("id", IntegerType(), True),
StructField("name", StringType(), True),
StructField("age", IntegerType(), True),
]
)
sparkμ λͺ¨λ λ°μ΄ν° νμ μ μ¬κΈ°μμ νμΈν μ μλ€.
λλ²μ§Έ λ°©λ²μ DDL (data definition language)μ μ¬μ©νλ λ°©λ²μΌλ‘, μ’λ λ¨μνκ³ μ½κΈ° μ½λ€. stringμΌλ‘ κ° νλμ μ΄λ¦κ³Ό Typeμ ,λ‘ κ΅¬λΆνμ¬ μ£Όλ©΄ λλ€.
schema = "id INT, name STRING, age INT"
λ°μ΄ν°νλ μ μμ±
μ΄λ κ² μ μν μ€ν€λ§λ₯Ό λ°μ΄ν°νλ μμ μμ±ν λ createDataFameμ μΈμλ‘ κ°μ΄ λ£μ΄μ£Όλ©΄ λλ€.
df = spark.createDataFrame(data, schema)
λ€μκ³Ό κ°μ΄ μ¬μ μ μλ μ€ν€λ§ λμ column nameμ listλ₯Ό μ£Όκ±°λ, NoneμΌλ‘ μ§μ ν μλ μλλ°, μ΄ κ²½μ° λ°μ΄ν°μμ μ€ν€λ§λ₯Ό μλμΌλ‘ μ μΆ(inference)νλ€.
df = spark.createDataFrame(data, schema=["id", "name", "age"], samplingRatio=None)
μ€ν€λ§λ₯Ό μ μΆν λλ μ 체 λ°μ΄ν°νλ μμ μΌλΆ rowλ₯Ό samplingνμ¬ μμλΈλ€. samplingRatioλ₯Ό NoneμΌλ‘ μ€μ νλ©΄ 첫 λ²μ§Έ rowλ§ μ½μ΄μ μ€ν€λ§λ₯Ό μ μΆνλ€.
κ·Έλ¬λ μ΄ λ°©μμλ μ£Όμν΄μΌ ν μ μ΄ μλλ°, samplingRatioλ§νΌμ rowλ₯Ό μ½μλλ° κ°μ΄ λͺ¨λ Nullμ΄μ΄μ μ€ν€λ§λ₯Ό μ μΆν μ μλ€λ©΄, μλ¬κ° λ°μνκ² λλ€.
μμ±λ λ°μ΄ν°νλ μμμ λ€μκ³Ό κ°μ΄ μ€ν€λ§λ₯Ό λΆλ¬μ¬ μ μλ€.
df_schema = df.schema
'π½ Language & Frameworks > Spark' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ¬λ μ€νν¬] λ°μ΄ν°νλ μ μ°μ°κ³Ό μ μ²λ¦¬ (1) | 2023.11.20 |
---|---|
[λ¬λ μ€νν¬] λ°μ΄ν°νλ μ μ½κ³ λ΄λ³΄λ΄κΈ° (0) | 2023.11.19 |
[λ¬λ μ€νν¬] Columnκ³Ό Row (1) | 2023.11.19 |
[λ¬λ μ€νν¬] μ€νν¬ μ°μ°μ μ’ λ₯ (0) | 2023.09.03 |