我应如何加快Pyspark代码序列的速度?

时间:2018-10-19 17:13:23

标签: apache-spark pyspark apache-spark-sql spark-streaming

我有一个如下所示的客户支出历史记录表sold_df(实际表要大得多,下表显示了原始表的结构):

id  month   spent
A   1   5
B   3   15
C   1   12
A   2   99
C   3   35
B   1   10
C   2   20

该表是一个PySpark DataFrame。我想将其转换为其中的表:

1)每个客户的消费都对应一行; 2)每个月的支出对应一个栏。结构如下图所示:

id\month    1   2   3
A   5   99  null
B   10  null    15
C   12  20  35

由于表很大,因此我想使用PySpark库来实现此转换。我写的代码如下:

pent_final = spent_df.select("id").distinct()
for i in np.arange(1,4):
    i_str = str(i)
    spent_tmp = spent_df.select("id","month",col("spent").alias(i_str)).where(col("month")== i)
    spent_final = spent_final.alias('a').join(spent_tmp.alias('b'), col('a.id') == col('b.id'),'left_outer').select(col('a.*), col('b.' + i_str))

我对Pyspark很陌生。但是似乎代码可以完成任务。但是,我想知道有更好的方法吗?我可以没有循环吗?

0 个答案:

没有答案