달나라 노트

Python pyspark : lit (literal value로 column 만들기) 본문

Python/Python pyspark

Python pyspark : lit (literal value로 column 만들기)

CosmosProject 2021. 5. 28. 20:24
728x90
반응형

 

 

 

 

pyspark의 lit method는 literal value로 column을 생성할 때 사용됩니다.

 

 

 

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, lit
import pandas as pd

spark = SparkSession.builder.getOrCreate()

df_test = pd.DataFrame({
    'a': [1, 2, 3],
    'b': [10.0, 3.5, 7.315],
    'c': ['apple', 'banana', 'tomato']
})

df_spark = spark.createDataFrame(df_test)

df_new = df_spark.select(
    col('a'),
    col('b'),
    lit('z').alias('d') # 1
)
df_new.show()



-- Result
+---+------+----+
|  a|     b|   d|
+---+------+----+
|  1|  10.0|   z|
|  2|   3.5|   z|
|  3| 7.315|   z|
+---+------+----+

1. d라는 이름의 컬럼을 select method와 함께 생성하고있습니다.

이때 d 컬럼에 들어갈 값은 'z'라는 리터럴값이 되죠.

 

결과를 보면 d컬럼에 z가 들어간걸 볼 수 있습니다.

 

 

 

 

 

 

from pyspark.sql import SparkSession
from pyspark.sql.functions import col, lit
import pandas as pd
import datetime

spark = SparkSession.builder.getOrCreate()

df_test = pd.DataFrame({
    'a': [1, 2, 3],
    'b': [10.0, 3.5, 7.315],
    'c': ['apple', 'banana', 'tomato']
})

df_spark = spark.createDataFrame(df_test)

df_new = df_spark.select(
    col('a'),
    col('b'),
    lit(datetime.datetime.now().strftime('%Y%m%d')).alias('load_dt') # 1
)
df_new.show()



-- Result
+---+------+----------+
|  a|     b|   load_dt|
+---+------+----------+
|  1|  10.0|  20210528|
|  2|   3.5|  20210528|
|  3| 7.315|  20210528|
+---+------+----------+

1. lit을 약간 응용하면 위처럼 현재 날짜값을 가지는 column을 생성할 수도 있겠죠.

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
Comments