用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 国际许可协议进行许可。

知识共享许可协议