apache-spark - Spark SQL Datediff 列之间的分钟数
问题描述
我在一个表中有 2 列(两个日期,格式化为字符串类型)。我需要在几分钟内找到它们之间的差异,然后平均一年的差异。
格式如下: 请求时间:11/10/2019 03:10:15 PM 响应时间:11/10/2029 03:20:10 PM
有什么建议么?
解决方案
You can register a user defined function
import datetime
def min_diff(a,b):
start_time = datetime.datetime.strptime(a,'%m/%d/%Y %I:%M:%S %p')
end_time = datetime.datetime.strptime(b,'%m/%d/%Y %I:%M:%S %p')
return (end_time-start_time).total_seconds()/60
def year(c):
return datetime.datetime.strptime(c,'%m/%d/%Y %I:%M:%S %p').strftime('%Y')
spark.udf.register(name='min_diff',f=lambda a,b:min_diff(a,b))
spark.udf.register(name='year', f=lambda c:year(c))
spark.sql('select avg(min_diff(start_time,end_time)) avg_time_diff, year(start_time) year from test_table group by year').show()
推荐阅读
- java - 所有项目的 maven 依赖关系直方图(使用频率如何)
- python - Python:rdkit 库缺少许多功能
- python - 我如何使用 Selenium Python 遍历每个谷歌搜索页面,但它没有发生
- jhipster - 将 JHipster 实体子生成器集成到现有项目中
- python - Django - 获取登录用户组的列表。没有数据或“无法将关键字‘组’解析到字段中。选项有:id、名称、权限、用户”
- node.js - 模块解析失败,webstorm,Ionic 应用
- java - 如何将 URI 作为 jpg 文件保存到内部存储上的自定义文件夹中?
- javascript - 防止在不使用 onclick 功能的情况下使用 jquery 检查单选按钮
- git - 更改子模块时更新 git 子模块
- python - 纯 Python 模式下的 Cython,在 C 代码中使用 python 类