hive数据分析003-transform应用

transform

Hive 的 TRANSFORM 关键字提供了在 SQL 中调用自写脚本的功能。适合实现 Hive 中没有的 功能又不想写 UDF 的情况,脚本一般都是python写的。
二、案例操作
1.数据文件内容

vi transform.txt
steven:100;steven:90;steven:99^567^22
ray:90;ray:98^456^30
Tom:81^222^33

2.清洗后到数据库的数据格式如下:

steven    100    567     22
steven    90      567     22
steven    99      567     22
ray       90      456    30
ray       98      456    30
Tom       81      222    33

3.创建表存储原始数据

create table u_data(
col1 string, 
code int, 
age int) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '^' 
STORED AS TEXTFILE;

4.加载数据

load data local inpath '/home/hadoop/data/transform.txt' overwrite into table u_data;

3.编写transform脚本

vi u.py
#!/usr/bin/python
import sys
for line in sys.stdin:
 values = line.split()
 tmp = values[0]
 key_values = tmp.split(";")
 for kv in key_values:
  k = kv.split(":")[0]
  v = kv.split(":")[1]
  print '\t'.join([k,v,values[1],values[2]])

4.脚本部署位置 :

/home/hadoop/data/u.py

添加执行路径

add file /home/datechange.py;

5.测试

select transform(u.col1, u.code, u.age) using 'python u.py' as (col1, col2, col3, col4) from (select * from u_data) as u;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值