2016-07-22 6 views
0

データフレーム内に配列を集約する必要があります。グループを持つデータフレームに集約する

データフレームが

splitted.map(lambda x: Row(store= int(x[0]), date= parser.parse(x[1]), values= (x[2:(len(x))])) ) 

が、私はこの

mean_by_week = sqlct.sql("SELECT store, SUM(values) from sells group by date, store") 

のように思いますしたいが、私は次のようなエラー

を持つアレイ

である。この方法で作成されました

AnalysisException:データ型の不一致により、 "sum(values)"を解決できません:function sumには、ArrayType(StringType、true)ではなく数値型が必要です。ライン0 POS 0"

配列は常に同じ寸法を有する。しかし、それぞれの寸法が変更される可能性があり実行し、長さの100の近くにある。RDDの?

答えて

0

に行かずに集約することができますどのように

一致するディメンションまたはarray<>の合計ではないことは意味がないため、実装されていません。

from pyspark.sql.functions import col, array, size, sum as sum_ 

n = df.select(size("values")).first()[0] 
df = sc.parallelize([(1, [1, 2, 3]), (1, [4, 5, 6])]).toDF(["store", "values"]) 
df.groupBy("store").agg(array(*[ 
    sum_(col("values").getItem(i)) for i in range(n)]).alias("values")) 
関連する問題