Hive上的“自定义地图简化程序”,规则是什么?输入和输出怎么样?

问题描述

| 我被困了几天,因为我想根据我在hive上的查询创建一个自定义的map reduce程序,在谷歌搜索后发现没有很多示例,我仍然对该规则感到困惑。 创建自定义mapreduce程序的规则是什么,mapper和reducer类如何? 谁能提供任何解决方案? 我想用Java开发此程序,但仍然受阻,然后在收集器中格式化输出时,如何在mapper和reducer类中格式化结果? 是否有人想给我一些有关这种事情的例子和解释?     

解决方法

        从本质上讲,有两种将自定义映射器/化简器添加到配置单元查询的方法。 用
transform
  使用\'script \'作为事物1,从表1中选择SELECT TRANSFORM(stuff1,stuff2),   事2 其中stuff1,stuff2是table1中的字段,而script是任何接受我稍后描述的格式的可执行文件。 Thing1,Thing2是脚本的输出 使用地图和减少
FROM (
    FROM table
    MAP table.f1 table.f2
    USING \'map_script\'
    AS mp1,mp2
    CLUSTER BY mp1) map_output
  INSERT OVERWRITE TABLE someothertable
    REDUCE map_output.mp1,map_output.mp2
    USING \'reduce_script\'
    AS reducef1,reducef2;
这稍微复杂些,但可以提供更多控制。有两个部分。在第一部分中,映射器脚本将从
table
接收数据并将其映射到字段mp1和mp2。然后将它们传递给
reduce_script
,此脚本将在
CLUSTER BY mp1
中指定的键上接收排序的输出。请注意,一个减速器将处理多个键。 reduce脚本的输出将进入表
someothertable
现在,所有这些脚本都遵循一个简单的模式。他们将从stdin逐行读取。这些字段将以ѭ6分隔,并且将以相同的方式写回到stdout(以\'\\ t \'分隔的字段) 看看这个博客,有一些很好的例子。 http://dev.bizo.com/2009/07/custom-map-scripts-and-hive.html http://dev.bizo.com/2009/10/reduce-scripts-in-hive.html