hivepython 实现一行转多行

案例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

  

时间: 2024-10-19 19:10:44

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

删除dataGridview中选中的一行或多行

DialogResult RSS = MessageBox.Show(this,"确定要删除选中行数据码?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning); switch(RSS) { case DialogResult.Yes: for (int i = this.dataGridView1.SelectedRows.Count; i > 0; i--) { int ID = Convert.ToI

点击最后一行可以实现行自增效果的表格代码

点击最后一行可以实现行自增效果的表格代码:现在任何事务都追求效率和人性化,当然网页效果也是如此,如果一个可以编辑数据的表格,编辑到最后一行的时候,点击可以自动添加一行,这样算是一个比较人性化的效果,可以免去一丝劳顿之苦,下面分享一段这样的代码.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" conten

未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。

来源:http://www.cnblogs.com/JuneZhang/archive/2013/01/10/2853981.html 今天运行项目,提示“未能启用约束.一行或多行中包含违反非空.唯一或外键约束的值.”的异常信息. 在网上找了查了一些原因:http://www.cnblogs.com/muzihai1988/archive/2011/05/04/2036502.html 原因分析:强类型的DataTable和SQL语句查询出的结果不匹配. 简单说就是强类型的DataTable比S

javascript超过容器后显示省略号效果(兼容一行或者多行)

javascript超过容器后显示省略号效果 在实际的项目中,由于文字内容的长度不确定性和页面布局的固定性,难免会出现文字内容超过div(或其他标签,下同)区域的情况,此时比较好的做法就是当文字超过限定的div宽度后自动以省略号(…)显示,这样,按照习惯,人们都会知道这儿有文字被省略了.css中有个属性叫做text-overflow:ellipsis;比如使用css可以这样写: {width:27em; white-space:nowrap; text-overflow:ellipsis; -o

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

Attacking rooks Time Limit: 20000ms, Special Time Limit:50000ms, Memory Limit:65536KB Total submit users: 12, Accepted users: 7 Problem 13028 : No special judgement Problem description Chess inspired problems are a common source of exercises in algor

hdu1045Fire Net (一行变多行,一列变多列,最小顶点覆盖)

Fire Net Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6280 Accepted Submission(s): 3549 Problem Description Suppose that we have a square city with straight streets. A map of a city is a square

一行或者多行垂直居中问题

在实际开发中,我们会遇到很多需要多行垂直居中的问题,今天空闲做个总结. 1.首先一行问题我就不用说了,给一个line-height一般都能够解决垂直居中的问题. 但是如果是下面这中格式那该如何处理呢? <div> <p>多行多行多行多行</p> <p>多行多行多行多行</p> </div>方法一:也是最重要的.虽然这个方法不兼容ie6 ie7 给div一个父盒子 将父盒子的css设置为display:table. 子盒子display

ASP.NET_正则表达式_匹配HTML中的一行或多行

一.匹配数字串/flash/([0-9]+).htm二.匹配不含双引号的字符串<p class=\"w490\">([^\"]+)</p>三.匹配一行cnt\">(.+)\n四.匹配多行的"divAll\">([\\s\\S]*)<div id=PS:牧工 懒惰"divAll\">([\\s\\S]*?)<div id=\"divFooter"

Linux下如何高效删除一个几十G的文本文件的最后一行或几行

当我们在服务器端记录日志或文本数据时,有时候会有需要删除一个大文件的最后几行,这时如何才能高效实现. 上网浏览终于找到dd命令,亲测如下,删除一个32GB的日志文件最后100行仅需要4分钟 [[email protected]_10 tmp]# dd of=sqq_jobs_run.log.bak seek=1 bs=$(($(stat -c%s sqq_jobs_run.log.bak)-$(tail -1 sqq_jobs_run.log.bak|wc -c))) sqq_jobs_run.