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

具体以一个实例讲解。

Json 数据: {"movie":"1193","rate":"5","timeStamp":"978300760","uid":"1"}

需求:把 timestamp 的值转换成日期编号

1、先加载 rating.json 文件到 hive 的一个原始表 rate_json

create table rate_json(line string) row format delimited;

load data local inpath '/home/hadoop/rating.json' into table rate_json;

2、创建 rate 这张表用来存储解析 json 出来的字段:

create table rate(movie int, rate int, unixtime int, userid int) row format delimited fields

terminated by '\t';

解析 json,得到结果之后存入 rate 表:

insert into table rate select

get_json_object(line,'$.movie') as moive,

get_json_object(line,'$.rate') as rate,

get_json_object(line,'$.timeStamp') as unixtime,

get_json_object(line,'$.uid') as userid

from rate_json;

3、使用 transform+python 的方式去转换 unixtime 为 weekday

先编辑一个 python 脚本文件

########python######代码## vi weekday_mapper.py#!/bin/python

importsys

importdatetime

for line insys.stdin:

line =line.strip()

movie,rate,unixtime,userid = line.split('\t')

weekday =datetime.datetime.fromtimestamp(float(unixtime)).isoweekday()

print '\t'.join([movie, rate, str(weekday),userid])

保存文件 然后,将文件加入 hive 的 classpath:

hive>add file /home/hadoop/weekday_mapper.py;

hive>insert into table lastjsontable select transform(movie,rate,unixtime,userid)

using 'python weekday_mapper.py' as(movie,rate,weekday,userid) from rate;

创建最后的用来存储调用 python 脚本解析出来的数据的表:lastjsontable

create table lastjsontable(movie int, rate int, weekday int, userid int) row format delimited

fields terminated by '\t';

最后查询看数据是否正确

select distinct(weekday) from lastjsontable;

python中transform用法_TRANSFORM 用法相关推荐

  1. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  2. python中index函数_详解python中的index函数用法

    1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 de ...

  3. python中int函数的用法浅析_Python中int()函数的用法浅析

    int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int) Help on class int in module __builtin__ ...

  4. python中的lambda函数用法--无需定义函数名的函数或子程序,避免代码充斥着大量单行函数

    匿名函数lambda:是指一类无需定义标识符(函数名)的函数或子程序. lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值. 要点: lambda 函数不能包含命令 包含 ...

  5. python中int用法,Python中int()函数的用法浅析

    int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int) Help on class int in module __builtin__ ...

  6. python中pop函数的用法_python中pop()函数怎么用

    python中pop()函数的用法:pop()函数用于移除列表中的一个元素(默认最后一个元素),并且返回从列表中移除的元素对象.函数语法:[list.pop(ojb=list[-1])]. pop() ...

  7. python中index方法详解_详解python中的index函数用法

    1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 de ...

  8. python中config方法作用,python中ConfigParse模块的用法

    本文实例讲述了python中ConfigParse模块的用法,分享给大家供大家参考.具体方法如下: 写配置一般用ConfigParse.RawConfigParse类 读配置用ConfigParse. ...

  9. python中heapq的库是什么_详解Python中heapq模块的用法

    详解Python中heapq模块的用法 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  详解Python中heapq模块的用法.txt ] (友情提示:右键点上行t ...

  10. python中global和nonlocal用法的详细说明

    1.前言 第一,两者的功能不同.global关键字修饰变量后标识该变量是全局变量,对该变量进行修改就是修改全局变量,而nonlocal关键字修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数 ...

最新文章

  1. 没有日志,只有MDF文件如何恢复数据库(转)[
  2. CTF中常见Web源码泄露总结
  3. Java 算法 换零钞
  4. java用枚举代替int常量,让你的系统更安全--用枚举enum替代int常量
  5. 凯恩帝绝对坐标清零_凯恩帝100T数控车床怎么把加工数量时间清零
  6. 样式穿透和实现固钉效果
  7. 富爸爸穷爸爸--读书笔记
  8. PS怎么调整字体的行间距
  9. C 中使用GDI+制作个性化的网站新闻标题
  10. 2019牛客ACM暑期多校第八场
  11. git 仓库分支多文件夹管理
  12. 戴姆勒与Infosys结成战略合作伙伴关系,推动创新及IT基础设施转型
  13. pandas列是否为空_如果列值不为空,Python pandas将应用函数
  14. FDC2214调试笔记(1)——为什么FDC2214输出的会是0x00000000或者0xffffffff?
  15. 小绮的踩坑日记|小土堆pytorch视频——tensorboard
  16. 全球与中国漏磁清管器市场深度研究分析报告
  17. 毕业设计:基于SSM框架的新生报到数据可视化系统
  18. pytorch 拾贝集
  19. mini2440 安装OpenWrt 过程记录
  20. 使用 github pages, 部署静态网页

热门文章

  1. CDN网络简介及原理
  2. 一次失败的面试经历:我只想找个工作,你却用面试题羞辱我
  3. linux安装后,ghost其他win7系统盘,无法启动的修复
  4. js使用ip和子网掩码计算所在网段
  5. 英语流利说显示服务器错误,英语口语流利说系列失望(附音频)
  6. [Unity3D]Unity3D游戏开发之《经典打砖块》游戏项目讲解
  7. [英语单词] gated; cycle gated
  8. 2345浏览器,2011年4月14号的V1.1, beta版本又这些新功能!
  9. uniqueResult和Result有什么区别
  10. Code Ocean 上传代码 手把手教程