用python实现Hive UDF

因为项目需要,最近研究了一下如何用python写udf;

  • python部分:(通过stdin和stdout进行数据交互)

    #!/usr/bin/python
    import sys
    for line in sys.stdin:
      print(...)

  • 将写好的脚本上传到HDFS:

    $ hadoop fs -put -f xxx.py [PATH]

  • 在HIVE上:

    ADD FILE hdfs:///[PATH];
    set hive.execution.engine=mr;
    SELECT TRANSFORM(...)
    USING 'python jr_collect_list_udf.py'
    AS (...)
    FROM
      ...

  • P.S.:

    • 在python脚本中,接收到的数据为str类型,如果TRANSFROM(…)中有多个字段,则接收到的是用\t分隔的字符串;
    • 无论返回的是什么类型的数据,写在表里都是str;
    • 需要返回多个字段的话在return时用\t.join()就可以;

Contents


本站采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议

知识共享许可协议