我具有对hadoop服务器/群集的用户访问权限,该服务器/群集包含仅存储在配置单元(avro)中分区表/文件中的数据。我想知道是否可以在这些表上使用python mrjob执行mapreduce?到目前为止,我已经在CDH5上存储的文本文件上对mrjob进行了本地测试,并且易于开发使我印象深刻。
经过一番研究后,我发现有一个名为HCatalog的库,但据我所知它不适用于python(仅Java)。不幸的是,我没有太多时间来学习Java,我想坚持使用Python。
您是否知道对配置单元存储的数据运行mrjob的任何方法?
如果这是不可能的,是否有办法将python编写的mapreduce代码流化为 hive ? (我宁愿不将mapreduce python文件上传到配置单元)
最佳答案
如Alex所述,Mr.Job目前不适用于avro格式的文件。但是,有一种方法可以直接在配置单元表上执行python代码(不需要Mr.Job,很遗憾会失去灵活性)。最终,我通过执行“ADD FILE mapper.py”并执行带有TRANSFORM ... USING ....的SELECT子句,将映射器的结果存储在单独的表中,从而将python文件作为资源添加到配置单元中。 Hive查询示例:INSERT OVERWRITE TABLE u_data_newSELECT TRANSFORM (userid, movieid, rating, unixtime) USING 'python weekday_mapper.py' AS (userid, movieid, rating, weekday)FROM u_data;
完整的示例在此处(底部):link
关于python - 我可以在分区的配置单元表上使用mrjob python库吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25889942/