Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 窗口中所有行上的用户定义函数_Apache Spark_Dataframe_Apache Spark Sql - Fatal编程技术网

Apache spark 窗口中所有行上的用户定义函数

Apache spark 窗口中所有行上的用户定义函数,apache-spark,dataframe,apache-spark-sql,Apache Spark,Dataframe,Apache Spark Sql,我有一组带时间戳的位置数据和一组附加到每个位置的字符串特征ID。我想使用spark中的一个窗口将当前N行和下N行中的所有这些功能id字符串组合在一起,ala: 导入系统 从pyspark.sql.window导入窗口 将pyspark.sql.functions作为func导入 windowSpec=Window\ .partitionBy(df['userid'])\ .orderBy(df['timestamp'])\ .rowsBetween(-50,50) dataFrame=sqlCo

我有一组带时间戳的位置数据和一组附加到每个位置的字符串特征ID。我想使用spark中的一个窗口将当前N行和下N行中的所有这些功能id字符串组合在一起,ala:

导入系统 从pyspark.sql.window导入窗口 将pyspark.sql.functions作为func导入 windowSpec=Window\ .partitionBy(df['userid'])\ .orderBy(df['timestamp'])\ .rowsBetween(-50,50) dataFrame=sqlContext.table(“位置”) featureId=featuresCollector(数据帧['featureId'])。超过(windowSpec) dataFrame.select( dataFrame['product'], 数据帧['category'], 数据帧[“收入”], featureId.alias(“所有featureId”))
Spark是否可以实现这一点?如果可以,我如何编写一个类似featuresCollector的函数来收集窗口中的所有功能ID?

Spark UDF不能用于聚合。Spark提供了许多工具(,
AggregateExpressions
),可用于自定义聚合,其中一些工具可用于窗口,但不能在Python中定义

如果您只想收集记录,
collect\u list
应该可以做到这一点。请记住,这是一项非常昂贵的操作

从pyspark.sql.functions导入收集列表
featureId=收集列表('featureId')。超过(windowSpec)