1.Java继承UDF类重写evaluate方法后打成Jar包上传,添加到Hive函数中
2.使用
Transform在SQL中调用自己写的脚本
这里主要说下第二种:
1. 需要用到的原始表如下,分隔符号为\t
hive> select * from my_one_table;
OK
1 songqinghu
2 zhangwei
3 lujia
4 liuyuxin
2.为转换后的数据创建一个新表
drop table new_name;
CREATE TABLE new_name (
name string,
id string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';
3.编写一个python脚本,将字段位置换位一下
one.py 文件
#!/bin/python
import sys
for line in sys.stdin:
line = line.strip()
id, name = line.split('\t')
print ','.join([name,id])
4.将脚本文件上传到hive中(文件需要在hive服务机器上)
add FILE /home/hadoop/one.py;
5.执行transform
INSERT OVERWRITE TABLE new_name
SELECT
TRANSFORM (id,name)
USING 'python one.py'
AS (id,name)
FROM my_one_table;
运行就结果如下: