Spark(使用pyspark)在一个数据帧(结构化流)中使用值来查询静态数据帧并将第二个df中的行与第一个df合并

时间:2018-05-07 06:10:59

标签: python merge pyspark spark-dataframe

我有一个结构化的流数据帧,我希望,对于每一行,取一列中的值(在本例中为时间戳,如1525670700),并使用该值查询另一个静态数据帧,以获得该值的最近时间戳和将从该查询返回的一行合并到结构化流数据帧,例如

my_row_to_merge_df = weather_df.filter(weather_df.timestamp_unix > 1525670700).sort(col('timestamp_unix').asc()).limit(1).show()

有了这个我想做的事情:

joined_df = streaming_df.merge(function_to_return_row_from_other_df(col('timestamp')))

在这种情况下使用连接的问题是时间戳可能不完全匹配,但如果它们是几秒甚至几分钟不同就没关系。

所以在那,我不确定我能做什么样的操作才能得到这个结果。

1 个答案:

答案 0 :(得分:0)

您可以将时间戳舍入到您需要的显着性级别:

# Assuming timestamp is in seconds
timestamp_rounded = int(timestamp - (timestamp % int(minutes * 60)))

其中"分钟"是你想要舍入的级别。例如,如果您选择分钟= 5,则将时间戳舍入(每小时)5分钟。

您可以添加新列,如下所示:How to do mathematical operation with two column in dataframe using pyspark