Apache spark ApacheSpark中的上一项搜索

Apache spark ApacheSpark中的上一项搜索,apache-spark,pyspark,Apache Spark,Pyspark,我是大数据领域的新手,我要解决一个问题。我目前正在测量Spark解决方案,希望检查Spark是否可以实现这一点 我的简化输入数据模式: |TransactionID|CustomerID|Timestamp| 我想得到的是,对于每个交易ID,在同一个客户中找到之前的5个交易ID。因此,输出数据模式如下所示: |TransactionID|1stPrevTID|2ndPrevTID|...|5thPrevTID| 我的输入数据源大约有十亿个条目 我的问题是,火花是一个很好的解决方案吗?或者我应

我是大数据领域的新手,我要解决一个问题。我目前正在测量Spark解决方案,希望检查Spark是否可以实现这一点

我的简化输入数据模式:

|TransactionID|CustomerID|Timestamp|
我想得到的是,对于每个交易ID,在同一个客户中找到之前的5个交易ID。因此,输出数据模式如下所示:

|TransactionID|1stPrevTID|2ndPrevTID|...|5thPrevTID|
我的输入数据源大约有十亿个条目


我的问题是,火花是一个很好的解决方案吗?或者我应该考虑别的吗?

< P>这可以用<代码>滞后> /代码>函数。

from pyspark.sql.functions import lag
from pyspark.sql import Window
#Assuming the dataframe is named df
w = Window.partitionBy(df.customerid).orderBy(df.timestamp)
df_with_lag = df.withColumn('t1_prev',lag(df.transactionID,1).over(w))\
                .withColumn('t2_prev',lag(df.transactionID,2).over(w))\
                .withColumn('t3_prev',lag(df.transactionID,3).over(w))\
                .withColumn('t4_prev',lag(df.transactionID,4).over(w))\
                .withColumn('t5_prev',lag(df.transactionID,5).over(w))
df_with_lag.show()

Window函数:返回当前行之前偏移行的值,如果当前行之前偏移行少于,则返回defaultValue。例如,偏移量为1将返回窗口分区中任何给定点的前一行


这可以使用
lag
功能完成

from pyspark.sql.functions import lag
from pyspark.sql import Window
#Assuming the dataframe is named df
w = Window.partitionBy(df.customerid).orderBy(df.timestamp)
df_with_lag = df.withColumn('t1_prev',lag(df.transactionID,1).over(w))\
                .withColumn('t2_prev',lag(df.transactionID,2).over(w))\
                .withColumn('t3_prev',lag(df.transactionID,3).over(w))\
                .withColumn('t4_prev',lag(df.transactionID,4).over(w))\
                .withColumn('t5_prev',lag(df.transactionID,5).over(w))
df_with_lag.show()

Window函数:返回当前行之前偏移行的值,如果当前行之前偏移行少于,则返回defaultValue。例如,偏移量为1将返回窗口分区中任何给定点的前一行