案例1:

==效果等同于一行转多行

数据表名称:zhangb.gid_tags
数据格式,每行是2个字段,(gid,tags) ,可能有脏数据,分隔符为“\t”,
 
ANDROID-9de77225cadb4319adfc1b1fe51c54f0        h65010000,014200,018100,011300,0200
ANDROID-9de77dfdbbab42679eed11f4e48c0ffc         022000,026400,022400,016400,018100
 
要统计tags中每个tag出现的次数:使用hive python方法:
 
第一步:写python处理脚本:脚本名字:hivepython.py
 
import sys
for line in sys.stdin:
     appArray=line.strip( ).split("\t") 
     if len(appArray)==2:
         gid=appArray[0]
         tags=appArray[1].split(",")
         for tag in tags:
              print  tag
脚本输出是1个字段 tag
 
第二步,将python脚本加进hive 中:
add file /home/zhangb/hivepython.py
 
第三步:运行hive语句:
 
select b.* from (
select a.counter_attr as tag,count(1) as tag_count from (
select TRANSFORM(gid,usertags) USING 'python hivepython.py' as counter_attr from zhangb.gid_tags) a
group by a.counter_attr) b
sort by b.tag;
 
 
 
案例2:
案例1是python处理后输出了1个字段,下面是输出多个字段的形式:
【参考:http://www.cnblogs.com/Joe-T/p/4643452.html】
  

Hive中有一表,列分隔符为冒号(:),有一列utime是Timestamp格式,需要转成Weekday存到新表。

利用Python写一个Pipeline的Transform,weekday.py的代码也很简单:
import sys
import datetime
for line in sys.stdin:
   line=line.strip()
   uid,mid,rating,utime=line.split(':')
   weekday=datetime.datetime.fromtimestamp(float(utime)).isoweekday()
   print '\t'.join([uid,mid,rating,str(weekday)])
 
HQL的查询也很简单:
select 
transform(uid,mid,rating,utime) 
using 'python weekday.py' as (uid,mid,rating,weekday) 
from rating

  

 

hivepython 实现一行转多行的更多相关文章

  1. winform代码:关联窗体数据更新,删除dataGridview中选中的一行或多行

    一.关联窗体数据更新 关联窗体数据修改时,如果一个为总体数据显示窗体A,另一个为详细修改窗体B,从A进入B,在B中对数据进行修改,然后返回A,这时A窗体的数据需要更新. 我采用最简单的方法,首先保证每 ...

  2. HNU13028Attacking rooks (二分匹配,一行变多行,一列变多列)

    Attacking rooks Time Limit: 20000ms, Special Time Limit:50000ms, Memory Limit:65536KB Total submit u ...

  3. hive 实现一个字段多行转一行 和 一行转多行

    1.多行转一行 多行转一行可以通过concat_ws(',',collect_set(col_name)) as col_new的方式实现,可以参考:https://www.cnblogs.com/s ...

  4. hive一行变多行及多行变一行

    hive一行变多行及多行变一行 场景 name alias zhaoqiansun abc def ghi 处理数据时需要将上表处理成为下面的形式: name alias zhaoqiansun ab ...

  5. 一行转多行 及多行转一行的 hive语句

      注意 :|,: 是特殊符号,要用 "\\|", "\\;"来表示.   一行转多行 usertags 里面有很多项,每项之间以逗号分隔   create t ...

  6. 在用easyui中做CRUD功能时,当删除一行或多行数据后再点击修改会提示你选中了多行,如何解决这个bug了?

    在用easyui中做CRUD功能时,当删除一行或多行数据后再点击修改会提示你选中了多行,如何解决这个bug了? 在删除成功后,加上这句话就可以了:$("#dg").datagrid ...

  7. (原)未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值与DATEADD

    SQLServer2014,查询分析器中 这样的脚本是没有问题的:AND TPO.CREATEON <= DATEADD(DAY, 1, '2017/3/3 0:00:00') 但.NET  D ...

  8. Java使用FileReader(file)、readLine()读取文件,以行为单位,一次读一行,一直读到null时结束,每读一行都显示行号。

    //Java使用FileReader(file).readLine()读取文件,以行为单位,一次读一行,一直读到null时结束,每读一行都显示行号. public static void readFi ...

  9. WPF DataGrid 获取选中 一行 或者 多行

    WPF中DataGrid使用时,需要将其SelectedItem转换成DataRowView进行操作 然而SelectedItem 与SelectedItems DataGrid的SelectionU ...

随机推荐

  1. 重建oracle的em

    重建oracle的em   今天不知道怎么,心血来潮,就把本机从域里退了出去,然后准备把oracle11g的control给处理处理 一开始也没怎么用心,上网随便找了点资料,就照着干了,然后什么都没干 ...

  2. ASP.NET 实现伪静态网页方法

    方法一:利用Httphandler实现URL重写(伪URL及伪静态) 我们有时候会见到这样的地址:“http://www.huoho.com/show-12-34.html”,你或许认为在站点服务器根 ...

  3. C/C++基础----IO库

    IO对象无拷贝或赋值,通常以引用形式传递. IO库条件状态 strm::iostate 一种机器相关的类型,提供了表达条件状态的完整功能 strm::badbit 用来指出流已经崩溃 strm::fa ...

  4. 通过textarea标签解决ClipboardJS在iphone复制失败问题

    前段时间做了微信自定义分享的功能,分享出的页面存在邀请码在ios手机上复制失败的问题,然而在PC端和安卓机上是没有问题的.百度了一下,基本给出的解决方案是:ios不单纯支持on,为点击的元素添加空点击 ...

  5. springMVC学习(6)-包装pojo类型、数组、list、Map类型参数绑定

    一.包装类型pojo参数绑定: 需求:商品查询controller方法中实现商品查询条件传入. 实现方法: 1)在形参中 添加HttpServletRequest request参数,通过reques ...

  6. Find substring with K distinct characters

    Given a string and number K, find the substrings of size K with K distinct characters. If no, output ...

  7. jquery粘贴操作

    今天忘记记录一个点了,关于input字体默认浅色,聚焦变深的问题. 图一,默认浅色 图二,聚焦出现下拉框“最近搜索”记录,点击“程序员” 图三,input值变为“程序员”,颜色没有变深(复制粘贴也不变 ...

  8. 显式锁(二)Lock接口与显示锁介绍

    一.显式锁简介    显式锁,这个叫法是相对于隐式锁synchronized而言的,加锁和解锁都要用户显式地控制.显示锁Lock是在Java5中添加到jdk的,同synchronized一样,这也是一 ...

  9. uva-10562-二叉树

    题意: Homer教授被报道失踪了,我们怀疑这和他最近的研究有关,但是我们确实不知道他最近在研究什么. 侦探们试图侵入他的电脑,再几次失败后才意思到教授的智力超出他们很多............... ...

  10. centos7.3安装zip,unzip

    安装命令: yum install -y unzip zip