ITPub博客

首页 > 数据库 > 数据库开发技术 > 这样的公司,不待也罢!

这样的公司,不待也罢!

原创 数据库开发技术 作者:3分钟秒懂大数据 时间:2021-09-16 07:00:00 0 删除 编辑

关注并标星 3分钟秒懂大数据

每天1次,打卡阅读

获取AI、大数据技术和面经

大家好,我是土哥。

今天,有位刚入职不久的学弟给我说,因为客户提的一个Hive需求,他没有实现出来,然后老板差点让他滚蛋。

收到学弟的问题后,我看了看,是一个Hive UDF需求,Hive提供的内置函数无法满足这个业务处理需要。

其实这个时候可以考虑使用用户自定义函数(UDF:user defined function).

前序

自定义函数类别:

UDF: 作用于单个数据行,产生一个数据行作为输出。(数学函数,字符串函数)

UDAF:(用户定义聚集函数):接收多个输入数据行,并产生一个输出数据行。(count,max)

客户需求

  1. 现有一个json脚本,需要将里面的字符串解析存储到Hive仓库中,要求每个字段对应相应的数据,
  2. 将其中时间字段对应的数据秒转换成天数。

需求1

将json脚本里面的字符串解析存储到Hive仓库中,要求每个字段对应相应的数据。实现步骤如下:

json数据

通过上面的需求,我们知道hive提供的内置函数已经无法满足客户需求,所以这时需要我们自行定义内置函数。

使用IDEA进行代码编写   JsonParser 类继承UDF类 、 MovieRateBean类。

MovieRateBean类

JsonParser 类

将上述打包成jar包,上传到HDFS中,并且将json的数据也导入HDFS中。

启动hive数据仓库,然后在里面创建一个表,来后将json数据集导入表中,先将他们解析成一条一条的字符串。

查询结果如下:

导入表中 因为这些数据现在只是字符串形式,所以需要将他们解析成数据库的字段形式,每个字段对应响应的数据。

这时候将要用到我们定义的函数。操作步骤如下:

查询结果如下:

我们可以看到,用函数解析之后,因为没有字符分割,所以只是将数据给整理好,但是对应的字段没有显示出来,所以接下来 我们需要重新创建一个表,然后分割成四段,让每一段数据对应他的字段。

执行结果如下:

需求2

将其中时间字段对应的数据秒转换成天数。

技术实现:Hive的 Transform 关键字提供了在SQL中调用自写脚本的功能,适合实现Hive中没有的功能又不想写UDF的情况

现在使用Transform关键字来实现

  1. 创建一个python脚本  然后在HDFS中创建一个文件将脚本复制进去并保存, 文件命名为weekday_mapper.py
  1. 将脚本添加到指定路径下;
  2. 重新创建一个表  使用上述的python 脚本
  3. 待程序执行完之后进行查询  相应指令如下:

最终的查询结果如下:

我将这个代码发给那位学弟,告诉他,先韬光养晦半年,后面重新跳槽,这公司不待也罢!!!

本文原创作者:土哥、一位大数据算法工程师。

文章首发平台:微信公众号【3分钟秒懂大数据】

各位觉得文章讲的不错的话,不妨点赞(在看)、留言、转发三连走起!谢谢大家!

End



关注下方公众号,分享硬核知识
最近整理了一份计算机类的书籍,包含python、java、大数据、人工智能、算法等,种类特别齐全。
获取方式:关注公众号:3分钟秒懂大数据,回复:福利,就可以获得这份超级大礼!

关注上方公众号,回复:福利,获取超级超级大礼!


原文作者:3分钟秒懂大数据;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2021-06-15

  • 博文量
    98
  • 访问量
    42098