I would like to apply the CounterCounter function to get this:
def flatten_counter(val): return Counter(reduce (lambda x, y:x+y, val)) udf_flatten_counter = sf.udf(flatten_counter, ty.ArrayType(ty.IntegerType())) df3 = df2.select("store", flatten_counter("values2").alias("values3")) df3.show(truncate=False) def flatten_counter(val): return Counter(reduce (lambda x, y:x+y, val)) udf_flatten_counter = sf.udf(flatten_counter, ty.ArrayType(ty.IntegerType())) df3 = df2.select("store", flatten_counter("values2").alias("values3")) df3.show(truncate=False) df.rdd.map(lambda r: (r.store, r.values)).reduceByKey(lambda x, y: x + y).map(lambda row: Counter(row[1])).toDF(['store', 'values']).show() df.rdd.map(lambda r: (r.store, r.values)).reduceByKey(lambda x, y: x + y).map(lambda row: Counter(row[1])).toDF(['store', 'values']).show()