python hive udf開發

編寫python的代碼

python文件名:getOperators.py,代碼以下:node

#!/usr/bin/env python
# -*- coding:UTF-8 -*-
import sys
import re
'''
python 獲取手機運營商
'''

if __name__ == '__main__':

    isChinaMobile = "^134[0-8]\\d{7}$|^(?:13[5-9]|147|15[0-27-9]|178|1703|1705|1706|18[2-478])\\d{7,8}$"; # 移動
    isChinaUniom = "^(?:13[0-2]|145|15[56]|176|1704|1707|1708|1709|171|18[56])\\d{7,8}|$"; # 聯通
    isChinaTelcom = "^(?:133|153|1700|1701|1702|177|173|18[019])\\d{7,8}$"; # 電信


    regexMobile = re.compile(isChinaMobile, flags=0)
    regexUniom = re.compile(isChinaUniom, flags=0)
    regexTelcom = re.compile(isChinaTelcom, flags=0)

    for line in sys.stdin:
        tel = line.strip()
        if regexMobile.match(tel):
            print "中國移動"
        elif regexUniom.match(tel):
            print "中國聯通"
        elif regexTelcom.match(tel):
            print "中國電信"
        else:
            print "未知"

把python文件上傳到hdfs中

格式 hdfs dfs -put 本地路徑 hdfs路徑python

hdfs dfs -put /data/scripts/python_udf/getOperators.py /user/webuser/hive_udf/python

把python文件添加到hive系統中

在hive命令行運行下面命令。 注意:m102 是namenode的主機名,這兒需改爲你本身的。web

add file hdfs://m102/user/webuser/hive_udf/python/getOperators.py;

HQL語句中查詢使用

使用格式: transform(字段名) using "python文件名"sql

select  transform(telephone)  using  "getOperators.py"  as  (yys)
from  m_uc_account

注意

一個session斷開後,下一次新的session須要從新把python文件添加hive系統中。shell

相關文章
相關標籤/搜索