我可以在分区的配置单元表上使用mrjob python库吗?

时间:2014-09-17 11:57:24

标签: python hadoop streaming hive mrjob

我有一个用户访问hadoop服务器/集群,其中包含仅存储在hive(avro)中的分区表/文件中的数据。我想知道我是否可以在这些表上使用python mrjob执行mapreduce?到目前为止,我一直在本地测试存储在CDH5上的文本文件mrjob,我对开发的简易性印象深刻。

经过一些研究后,我发现有一个名为HCatalog的库,但据我所知,它不适用于python(只有Java)。不幸的是,我没有太多时间学习Java,我想坚持使用Python。

你知道如何在hive存储数据上运行mrjob吗?

如果这是不可能的,有没有办法将python编写的mapreduce代码流式传输给hive? (我宁愿不将mapreduce python文件上传到hive)

1 个答案:

答案 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