Pyspark에 대한 expr 함수

5819 단어 sparkpysparktech

개요


expr 함수의 매개 변수에서 사용할 수 있는 함수는 pspark입니다.sql.functions 내의 함수입니다.
https://spark.apache.org/docs/latest/api/python/reference/api/pyspark.sql.functions.expr.html

사용 예


예1


다음은 pspark입니다.sql.functions.sqrt를 사용합니다.
https://spark.apache.org/docs/latest/api/python/reference/api/pyspark.sql.functions.sqrt.html
xy_df = xy_df.withColumn('distance',F.expr('sqrt(x * x + y * y)'))

예2


pyspark.sql.functions.rand 등 설정 사용하기 - 1~1의 랜덤수
https://spark.apache.org/docs/latest/api/python/reference/api/pyspark.sql.functions.rand.html
rand_df = rand_df.withColumn('random',F.expr('rand() * 2 - 1'))

예3


상술한 방법 등과 결합하여 몬테카로법의 원주율
※ Spark in Action의 맵/Reduce와는 다른 방법을 사용합니다.(브로드웨이는...)
darts = 10000

l = []

for x in range(darts):
    l.append([x])
#   l.append((x,)) tupleの場合
# https://jamiekt.wordpress.com/2016/12/13/creating-a-spark-dataframe-containing-only-one-column/

xy_df = spark.createDataFrame(l, ["index"])

xy_df = (
    xy_df
    .withColumn("x", F.expr("rand() * 2 - 1"))
    .withColumn("y", F.expr("rand() * 2 - 1"))
    .withColumn("distance", F.expr("sqrt(x * x + y * y)"))
    .withColumn("inside_a_circle", F.expr("CASE WHEN distance < 1 THEN True ELSE False END")
    )
)

4 * xy_df.filter('inside_a_circle = True').count() / 10000

좋은 웹페이지 즐겨찾기