Spark DF的Groupby和Xtract聚合中值

时间:2020-04-11 18:28:13

标签: python function loops apache-spark

code link

从transforms.api导入变换,输入,输出

将pyspark.sql.functions导入为f

@transform(

output1=Output("/Buyers/clean/median_750_buyers"),
output2=Output("/Buyers/clean/cleaned/split_purchase_log_data", sever_permissions=True),
my_input=Input("/Buyers/raw_data/purchase_log"),

def get_median_750_buyers(ctx,my_input,output1,output2):

my_input = my_input.dataframe()

#按购买者名称,大陆和服装项目分组,并从30种可能的组合中抽取25个中位购买者

 df = my_input.groupby('buyer_name', 'continent','clothing_items') \
             .count() \
             .select("buyer_name", f.col('count').alias('buyer_name_count')) \
             .sort(f.desc("buyer_name_count"))

# get the total row in the new dataframe
rowCount = df.count()

我有一个Spark数据框,该记录是1,000,000行的购买记录,有50,000个来自6大洲的5种不同类型服装的唯一购买者

6个洲:(北美洲,欧洲,亚洲,非洲,南美洲,澳大利亚)

5件衣服:(帽子,裤子,T恤,大衣,袜子)

我想从6个大洲和5种服装的每种组合=(30种组合)中获得一个25个买方名称的数据框,这些数据组在按Buyer_name列分组时最接近中位数。这样一来,总共有750个购买者,他们的购买数据的所有行都被提取并保存到一个名为“ 750_median_buyers”的数据框中。

要求是使用pyspark代码完成此操作。 谢谢任何帮助,万分感谢!

0 个答案:

没有答案