zoukankan      html  css  js  c++  java
  • Hive中的transform关键字的使用

    transform的作用

    hive的TRANSFORM关键字提供了在SQL中调用自写脚本的功能,适合实现HIVE中没有的功能而又不会写UDF的情况

    具体实现

    需求:将timetamp类型的数据转换成weekday

    (1)编写python脚本

    vi /root/weekday.py
    #!/bin/python
    import sys
    import datetime
    
    for line in sys.stdin:
      line = line.strip()
      movie,rate,ts,uid = line.split('	')
      weekday = datetime.datetime.fromtimestamp(float(ts)).isoweekday()
      print '	'.join([movie,rate,str(weekday),uid])

    (2)将python脚本加入到hive的classpath

    ADD file /root/weekday.py;

    (3)测试transform方式解析数据

    SELECT
    TRANSFORM(movie,rate,ts,uid)
    USING 'python weekday.py'
    AS (movieid,rate,weekday,userid)
    FROM t_movierate
    LIMIT 10
    ;
    

    (4)定义一张表用来存储最终结果

    CREATE TABLE IF NOT EXISTS t_rate_weekday(
    movieid int,
    rate int,
    weekday int,
    userid int 
    )
    ROW format delimited 
    fields terminated BY '	'
    ;
    

    (5)加载数据

    INSERT INTO t_rate_weekday
    SELECT
    TRANSFORM(movie,rate,ts,uid)
    USING 'python weekday.py'
    AS (movieid,rate,weekday,userid)
    FROM t_movierate
    ;
    

      注意:如果脚本不是Python,而是awk、sed等系统内置命令,可以直接使用,而不用add file。

  • 相关阅读:
    配置和兼容性测试的区别是什么?
    7 天内免登陆,测试要怎么去测试?
    在测试“支付网关”过程中的5个要点
    Hibernate入门与简谈
    jQuery专题
    Java反射机制专题
    Java IO流
    EL和JSTL专题
    泛型(Generic)
    Java异常处理
  • 原文地址:https://www.cnblogs.com/s1023/p/12585320.html
Copyright © 2011-2022 走看看