3

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

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

你知道有什么方法可以在 hive 存储的数据上运行 mrjob 吗?

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

4

1 回答 1

0

正如亚历克斯所说,目前 Mr.Job 不适用于 avro 格式的文件。但是,有一种方法可以直接在 hive 表上执行 python 代码(不需要 Mr.Job,不幸的是失去了灵活性)。最终,我设法通过执行“ADD FILE mapper.py”并使用 TRANSFORM ... USING .... 执行 SELECT 子句将 python 文件作为资源添加到配置单元,将映射器的结果存储在单独的表中。示例 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;

此处提供完整示例(在底部):链接

于 2014-10-15T08:13:14.230 回答