スパークデータフレーム内の異なる列を合計します。pysparkのリスト内の異なるデータフレーム列を合計する正しい方法は何ですか?
コード#2に近づくされていないのはなぜ
from pyspark.sql import functions as F
cols = ["A.p1","B.p1"]
df = spark.createDataFrame([[1,2],[4,89],[12,60]],schema=cols)
# 1. Works
df = df.withColumn('sum1', sum([df[col] for col in ["`A.p1`","`B.p1`"]]))
#2. Doesnt work
df = df.withColumn('sum1', F.sum([df[col] for col in ["`A.p1`","`B.p1`"]]))
#3. Doesnt work
df = df.withColumn('sum1', sum(df.select(["`A.p1`","`B.p1`"])))
。 &#3。働いていない?あなたは内蔵の入力としてのiterableを取るSUM関数のpythonを使用しているので、それが動作ここ
# 1. Works
df = df.withColumn('sum1', sum([df[col] for col in ["`A.p1`","`B.p1`"]]))
、ので は、私には、Spark 2.2
ありがとうございました。ネイティブのpython sum()は、スパークの最適化のメリットがありません。それを行うスパークの方法は何ですか? –
上記のように2つの列だけを使用している場合、df.withColumn( 'sum1'、df ['A.p1''] + df ['' B.p1' '])を直接合計することができます。しかし、多くの列がある場合、UDFを使用することができます。 – Suresh
リストにn個の列を渡して合計します。私の列のリストは、ユーザ入力に基づいて変更されます –