美文网首页
python udf 函数使用

python udf 函数使用

作者: 叫兽吃橙子 | 来源:发表于2019-04-18 17:13 被阅读0次

参考资料

用python实现Hive中的UDF函数

1.创建表 ——hive窗口或者命令行
create external table zhengyuan.person(
name string,
idcard string)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t'
STORED as TEXTFILE
location '/user/zhengyuan/t0418';
2.加载数据
  • 文件路径为服务器上的路径
  • 只能在hive命令行运行,客户端不能使用
load data local inpath '/data/pyspark/program/auto_report/zhengyuan/test/person.txt' into table zhengyuan.person; 
3.加载 udf 函数
  • 文件路径为服务器上的路径
  • 只能在hive命令行运行,客户端不能使用
add file /data/pyspark/program/auto_report/zhengyuan/test/person.py
4.使用hive 实现相应功能
select idcard,
case when length(idcard) = 18 then
             case when substring(idcard,-2,1) % 2 = 1 then '男' 
             when substring(idcard,-2,1) % 2 = 0 then '女' 
             else 'unknown' end 
     when length(idcard) = 15 then 
            case when substring(idcard,-1,1) % 2 = 1 then '男'
            when substring(idcard,-1,1) % 2 = 0 then '女'
            else 'unknown' end
     else '不合法' end 
from zhengyuan.person;
5. UDF编写
  • 如下是我们的udf代码:
# -*- coding: utf-8 -*-
import sys

for line in sys.stdin:
    detail = line.strip().split("\t")
    if len(detail) != 2:
        continue
    else:
        name = detail[0]
        idcard = detail[1]
        if len(idcard) == 15:
            if int(idcard[-1]) % 2 == 0:
                print("\t".join([name,idcard,"女"]))
            else:
                print("\t".join([name,idcard,"男"]))
        elif len(idcard) == 18:
            if int(idcard[-2]) % 2 == 0:
                print("\t".join([name,idcard,"女"]))
            else:
                print("\t".join([name,idcard,"男"]))
        else:
            print("\t".join([name,idcard,"身份信息不合法!"]))
6.测试指令
cat person.txt|python person.py
7.使用udf——目前也只能用hive命令行执行
  • 模版
SELECT TRANSFORM (<columns>)
USING 'python <python_script>'
AS (<columns>)
FROM <table>;
  • 实际使用
select transform(name,idcard) USING 'python person.py'  AS (name,idcard,gender) from person;

相关文章

  • python udf 函数使用

    参考资料 用python实现Hive中的UDF函数 1.创建表 ——hive窗口或者命令行 2.加载数据 文件路径...

  • python日期函数udf-程序分享

    基于python函数的udf日期处理函数 1、基于最近在学习python,就是试试用python进行一下的日期处理...

  • Pig从入门到精通8:Pig的自定义函数

    Pig支持使用Java,Python,JavaScript三种语言编写的自定义函数UDF。一般情况下常用Java来...

  • 学习中的关键的问题

    hive中的topn操作需要使用到hive的窗口函数执行操作的。 spark的udf可以实现自定义的udf的函数的...

  • 通过UDF使mysql主动刷新redis缓存

    UDF是mysql的一个拓展接口,UDF(Userdefined function)用户自定义函数。在什么地方使用...

  • Python Pig UDF函数

    更多信息https://blue-shadow.top/附书代码Github工程:https://github.c...

  • NLTK之大规模文本挖掘

    python的流操作---map+reduceHive/pig下的UDF(用户定义函数)流封装器scikitpys...

  • 添加 Hive 自定义函数

    使用 Java 编写好 UDF 或 UDAF 函数后,Hive 要如何使用这些自定义函数呢? 1 在 HDFS 上...

  • pyspark pandas udf

    下面介绍pandas_udf的三种函数使用 Scalar UDFs函数 通常做一些简单计算使用该函数,输出长度与输...

  • python udf 心得

    概述 准备了两个 python 的udf函数,对比总结一下,有利于自己下次自己使用。 心得体会在上面,具体的对比过...

网友评论

      本文标题:python udf 函数使用

      本文链接:https://www.haomeiwen.com/subject/lddtgqtx.html