我有一个用户访问hadoop服务器/集群,其中包含仅存储在hive(avro)中的分区表/文件中的数据。我想知道我是否可以在这些表上使用python mrjob执行mapreduce?到目前为止,我一直在本地测试存储在CDH5上的文本文件mrjob,我对开发的简易性印象深刻。
经过一些研究后,我发现有一个名为HCatalog的库,但据我所知,它不适用于python(只有Java)。不幸的是,我没有太多时间学习Java,我想坚持使用Python。
你知道如何在hive存储数据上运行mrjob吗?
如果这是不可能的,有没有办法将python编写的mapreduce代码流式传输给hive? (我宁愿不将mapreduce python文件上传到hive)
答案 0 :(得分:0)
正如Alex所说,目前Mr.Job不能使用avro格式的文件。但是,有一种方法可以直接在hive表上执行python代码(不需要Mr.Job,不幸的是失去了灵活性)。最后,我设法通过执行“ADD FILE mapper.py”并使用TRANSFORM ... USING ....执行SELECT子句,将python文件添加为hive资源,将mapper的结果存储在单独的表中。示例Hive查询:
INSERT OVERWRITE TABLE u_data_new
SELECT
TRANSFORM (userid, movieid, rating, unixtime)
USING 'python weekday_mapper.py'
AS (userid, movieid, rating, weekday)
FROM u_data;
此处提供完整示例(位于底部):link