python - Spark(使用pyspark)使用一个数据帧(结构化流)中的值来查询静态数据帧并将第二个df中的行与第一个合并
问题描述
我有一个结构化的流数据帧,我想为每一行获取一列中的值(在本例中为时间戳,如 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')))
在这种情况下使用连接的问题是时间戳可能不完全匹配,但如果它们相差几秒钟甚至几分钟也没关系。
所以在那,我不确定我可以做什么样的操作来得到这个结果。
解决方案
您可以使用以下方法将时间戳四舍五入到您需要的重要性级别:
# Assuming timestamp is in seconds
timestamp_rounded = int(timestamp - (timestamp % int(minutes * 60)))
其中“分钟”是您要四舍五入的级别。例如,如果您选择分钟 = 5,您会将时间戳四舍五入(向下)为每 5 分钟一次。
您可以添加新列,如下所示:How to do math operation with two column in dataframe using pyspark
推荐阅读
- ios - LinkedBlockingQueue iOS Swift 4
- sharepoint-2013 - 如何将 SharePoint 访问令牌从逻辑应用传递到 HTTP 终结点
- ios - HDR 成像 opencv 3.1 和 swift 4.2 图像旋转 90 度
- c# - 文件返回时出现 InvalidOperationException
- python - OSError: [Errno 10048] 尝试绑定地址时出错
- xcode - 如何在 Xcode 9.2 和 iPhone XS max 中添加模拟器 iPhone XS
- javascript - Fullcalendar updateEvent 不会重新渲染
- angular - entryComponents之间的区别
- swift - 从 iOS 版本 12 崩溃的核心数据中获取数据
- reactjs - ReactJS - 从子组件中检索状态