2016-07-22 4 views
0

내 데이터 프레임 안에 배열을 집계해야합니다.그룹을 가진 데이터 프레임에 집계

dataframe이 방법

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 : u "데이터 유형 불일치로 인해 '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")) 
관련 문제