我有2个文件存储在HDFS文件系统中:
tbl_userlog:<website url (non canonical)> <tab> <username> <tab> <timestamp>
tbl_websites:<website url (canonical)> <tab> <total hits>
我编写了一个Hadoop作业序列,它连接了网站上的2个文件,对总点击量进行了过滤&gt; n每个网站然后为每个用户计算他访问过的具有&gt;的网站的数量。总命中数。序列的详细信息如下:
jobConf.set("mapred.join.expr", CompositeInputFormat.compose("inner" (...))
定义的Hadoop本机连接功能为了链接这些步骤,我只是按照描述的顺序顺序调用作业。每个单独的作业将其结果输出到HDFS,然后链中的以下作业依次检索和处理。
由于我是Hadoop的新手,我想请求您的咨询:
我正在使用Apache Hadoop 0.20.2并且在项目范围内不可能使用Pig或Hive等更高级别的框架。
提前感谢您的回复!
答案 0 :(得分:0)
就链接工作而言,你应该看看Oozie,它是一个工作流管理器。我还没有使用它,但那是我开始的地方。
答案 1 :(得分:0)
我认为你所拥有的将会有几点需要注意。在我开始列出它们之前,我想明确两个定义。仅映射作业是具有已定义的Mapper并且使用0 reducer运行的作业。如果作业正在运行&gt; 0 IdentityReducers,那么作业不是仅限地图的作业。仅减少作业是具有定义Reducer并使用IdentityMapper运行的作业。
对于软件中的问题,显然有多个解决方案,因此,虽然您的解决方案可行,但我不会推荐它。为此任务有4个MapReduce作业是有点昂贵的恕我直言。我想到的实现是使用Secondary Sort的M-R-R工作流程。