任何支援標準輸入輸出特性的程式語言都可以使用streaming方式來實現mapreduce job,基本原理就是輸入從unix系統標準輸入,輸出使用unix系統的標準輸出。
streaming的實現需要transform()函式和using關鍵字,transform()的引數是表的列名,using關鍵字用於指定指令碼
注意:先將指令碼add file 進來
比如wordcount功能:
1 #!/usr/bin/env python
2
3 import
sys4
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 pythonimport sys
fromoperator import itemgetter
wc_dict ={}
for line insys.stdin:
line =line.strip()
word, count =line.split()
try:
count = int(count)
wc_dict[word] = wc_dict.get(word, 0) + count
exceptvalueerror:
pass
sorted_dict = sorted(wc_dict.items(), key=itemgetter(0))
for word, count insorted_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自定義函式
1.建立類,繼承udf package com.hivedemo.udf import org.apache.hadoop.hive.ql.exec.description import org.apache.hadoop.hive.ql.exec.udf 自定義hive函式 description...
Hive 自定義函式
返回 所有自帶的函式 show functions 返回對該函式的解釋 desc function spilt 返回對該函式的使用例子 desc function extended split1.udf user defined function datediff,date format 等函式 一...
Hive 自定義函式
hive 支援自定義udf,udtf,udaf函式 以自定義udf為例 使用乙個名為evaluate的方法 package com.hive.custom import org.apache.hadoop.hive.ql.exec.udf import org.apache.hadoop.io.in...