hive:从程序而不是数据文件插入数据?

jk9hmnmh  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(405)

我想从一个程序的输出加载数据,但不是从一个已有的数据文件。我想要的是:

CREATE TABLE MyTable (
    X STRING);

INSERT OVERWRITE MyTable
    BY PROGRAM "python MyProgram.py";  -- #!/usr/bin/python
                                       -- print 'hello'
                                       -- print 'world'

SELECT X FROM MyTable;                 -- I will get 2 records:
                                       --   hello
                                       --   world

但Hive似乎不能提供 INSERT ... BY PROGRAM 方法。有别的办法吗?

z31licg0

z31licg01#

我过去使用的是hadoop hdfs restapi(http://hadoop.apache.org/docs/r1.0.4/webhdfs.html). 我从shell运行程序(.py),然后它通过api将数据推入hdfs/hive。如果已经设置了配置单元表,则可以覆盖现有的配置单元文件。
我使用的另一种方法是程序(.py、.sh等)将数据创建到临时文件中,然后可以使用hive命令添加该文件,然后删除临时文件。
编辑:
针对你说你无权进入壳牌的评论,您也许可以尝试利用hive中的自定义map/reduce功能(https://cwiki.apache.org/confluence/display/hive/tutorial 滚动到底部到“CustomMap/reduce scripts”),并将一些要忽略的伪数据传递到map reduce中,然后以reduce的形式编写.py脚本,让它发出所需的数据相反。

相关问题