Hadoop Streaming提供了一个便于进行MapReduce编程的工具包,使用它可以基于一些可执行命令、脚本语言或其他编程语言来实现Mapper和 Reducer,Streaming方式是基于Unix系统的标准输入输出来进行MapReduce Job的运行。

任何支持标准输入输出特性的编程语言都可以使用Streaming方式来实现MapReduce Job,基本原理就是输入从Unix系统标准输入,输出使用Unix系统的标准输出。

Streaming的实现需要TRANSFORM()函数和USING关键字,TRANSFORM()的参数是表的列名,USING关键字用于指定脚本

注意:

先将脚本add file 进来

比如WordCount功能:

1、使用Python实现Mapper,代码文件为word_count_mapper.py,代码如下所示:

1    #!/usr/bin/env python
2
3 import sys
4
5 for line in sys.stdin:
6 line = line.strip()
7 words = filter(lambda word: word, line.split())
8 for word in words:
9 print '%s\t%s' % (word, 1)

2、使用Python实现Reducer,代码文件为word_count_reducer.py,代码如下所示:

    #!/usr/bin/env python

    import sys
from operator import itemgetter wc_dict = {} for line in sys.stdin:
line = line.strip()
word, count = line.split()
try:
count = int(count)
wc_dict[word] = wc_dict.get(word, 0) + count
except ValueError:
pass sorted_dict = sorted(wc_dict.items(), key=itemgetter(0))
for word, count in sorted_dict:
print '%s\t%s' % (word, count)
 
 

3、输出统计:

add file /home/hadoop/test928/wc_map.py /home/hadoop/test928/wc_reduce.py;
select transform(wc.word,wc.count) using 'python wc_reduce.py' as word ,count from (select transform(line) using 'python wc_map.py' as word, count from docs) wc;

(转)hive streaming 使用的时候的一些心得

hive streaming 报错的解决方案:
1、把使用到hive streaming 的sql 分解,例如:select transform a,b,c,d using 'python cc.py' as (e,f) from table,分解成:select a,b,c,d from table ,然后执行:  hive -e "select a,b,c,d from table" | python cc.py,这样如果是语法有问题的话就会检查出来。
2、查看是否是编码问题:如果你的sql中要使用:using “cc.py” 那么如果python脚本有编码问题的话,就会无法执行并报错。监测是否有问题的方法是:chmod 777 cc.py,然后用./cc.py执行脚本,如果报错,那么sql中肯定也报错,解决方法就是用 using “python cc.py”
3、如果你的集群配置了日志收集,那么查看问题就方便多了,直接去执行sql的hdfs 上面的application目录下面查看就可以。
4、在python 脚本中加上 import traceback ; except Exception,e: print traceback.format_exc()

hive自定义函数——hive streaming的更多相关文章

  1. Hive自定义函数的学习笔记(1)

    前言: hive本身提供了丰富的函数集, 有普通函数(求平方sqrt), 聚合函数(求和sum), 以及表生成函数(explode, json_tuple)等等. 但不是所有的业务需求都能涉及和覆盖到 ...

  2. hive -- 自定义函数和Transform

    hive -- 自定义函数和Transform UDF操作单行数据, UDAF:聚合函数,接受多行数据,并产生一个输出数据行 UDTF:操作单个数据 使用udf方法: 第一种: add jar xxx ...

  3. hive自定义函数(UDF)

    首先什么是UDF,UDF的全称为user-defined function,用户定义函数,为什么有它的存在呢?有的时候 你要写的查询无法轻松地使用Hive提供的内置函数来表示,通过写UDF,Hive就 ...

  4. hive自定义函数学习

    1介绍 Hive自定义函数包括三种UDF.UDAF.UDTF UDF(User-Defined-Function) 一进一出 UDAF(User- Defined Aggregation Funcat ...

  5. hive自定义函数UDF UDTF UDAF

    Hive 自定义函数 UDF UDTF UDAF 1.UDF:用户定义(普通)函数,只对单行数值产生作用: UDF只能实现一进一出的操作. 定义udf 计算两个数最小值 public class Mi ...

  6. Hive 自定义函数(转)

    Hive是一种构建在Hadoop上的数据仓库,Hive把SQL查询转换为一系列在Hadoop集群中运行的MapReduce作业,是MapReduce更高层次的抽象,不用编写具体的MapReduce方法 ...

  7. Hive 自定义函数

    hive 支持自定义UDF,UDTF,UDAF函数 以自定义UDF为例: 使用一个名为evaluate的方法 package com.hive.custom; import org.apache.ha ...

  8. Hive 自定义函数 UDF UDAF UDTF

    1.UDF:用户定义(普通)函数,只对单行数值产生作用: 继承UDF类,添加方法 evaluate() /** * @function 自定义UDF统计最小值 * @author John * */ ...

  9. Hive自定义函数UDF和UDTF

    UDF(user defined functions) 用于处理单行数据,并生成单个数据行. PS: l 一个普通UDF必须继承自“org.apache.hadoop.hive.ql.exec.UDF ...

随机推荐

  1. 关于PHP上传文件失败但是找不到原因的问题?

    确定上传文件的前后台代码都准确无误后,可以考虑是不是PHP配置文件中限制了上传文件的大小 1.找到根目录中的PHP文件夹 2.点击当前正在使用的的PHP版本 3.搜索php.ini 4.打开 phpF ...

  2. node里有没有清理require和dependencies的工具

    写node的时候,常常以为自己需要某个package,于是require了一下,结果写着写着,又没有用到,安装了某个包save了一下,最后也没用到. 一个项目写完发现整个require和depende ...

  3. Linux实用指令(2)

    cat指令     cat 查看文件内容,只读的方式 • 基本语法     cat [选项] 要查看的文件 • 常用选项     -n :显示行号 • 应用实例   注意:cat 只能浏览文件,而不能 ...

  4. Mybatis 和Spring整合之原始dao开发

    F:\Aziliao\mybatis\代码\31.mybatis与spring整合-开发原始dao 1.1. SqlMapConfig.xml <?xml version="1.0&q ...

  5. tomcat配置APR

    转载 Windows下配置Tomcat的Apr(包括Https)  tomcat bio nio apr 模式性能测试与个人看法 一.windows 下配置Tomcat的APR: 1.到Apache  ...

  6. 【题解】洛谷P1283 平板涂色(搜索+暴力)

    思路 看到n<16 整个坐标<100 肯定想到暴力啊 蒟蒻来一发最简单易懂的题解(因为不会DP哈 首先我们用map数组来存坐标图 注意前面的坐标需要加1 因为输入的是坐标 而我们需要的是格 ...

  7. Web打印连续的表格,自动根据行高分页

    拿到这个需求,我已经蛋碎了一地,经过N天的攻克,终于是把它搞定了,只是不知道会不会在某种情况下出现BUG.表示我心虚没有敢做太多的测试.... ---------------------------- ...

  8. ssm调用后台oracle存储过程统计分析数据

    笔者所在项目需要一个统计本机构近6月收入情况(分两种).本机构下级机构收入情况的需求,数据量为百万级. 具体需求是时间.机构都不确定,可为入参. 综合考虑后决定使用后台存储过程统计. 基础表结构如下: ...

  9. 4 二维数组中的查找 JavaScript

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  10. sql查询关于时间的一些汇总

    今天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=0 昨天的所有数据:select * from 表名 where ...