首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Hadoop streaming中使用TotalOrderPartitioner

在Hadoop streaming中使用TotalOrderPartitioner
EN

Stack Overflow用户
提问于 2014-05-14 10:11:13
回答 2查看 891关注 0票数 0

我正在使用python和Hadoop streaming来做一个项目,我需要Hadoop中的TotalOrderPartitionerInputSampler提供的类似功能,也就是说,我需要首先采样数据并创建分区文件,然后使用分区文件来决定哪个K-V对将转到映射器中的哪个reducer。我需要在Hadoop 1.0.4中执行此操作。

我只能找到一些使用KeyFieldBasedPartitioner和自定义分区程序的Hadoop流示例,它们在命令中使用-partitioner选项来告诉Hadoop使用这些分区程序。我找到的使用TotalOrderPartitionerInputSampler的示例都是用Java语言编写的,它们需要使用InputSamplerwritePartitionFile()DistributedCache类来完成这项工作。所以我想知道是否有可能将TotalOrderPartitioner与hadoop流一起使用?如果可能的话,我如何组织我的代码来使用它呢?如果不是,那么先在python中实现total分区程序,然后再使用它是否可行?

EN

回答 2

Stack Overflow用户

发布于 2014-05-14 11:06:20

没有尝试,而是使用KeyFieldBasedPartitioner并简单地替换为:

-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner

使用

-partitioner org.apache.hadoop.mapreduce.lib.partition.TotalOrderPartitioner

应该行得通。

票数 0
EN

Stack Overflow用户

发布于 2015-08-31 18:54:27

在Hadoop流中使用TotalOrderPartitioner的一种可能方法是对其中的一小部分进行重新编码,以便从环境变量中获取其分区文件的路径名,然后编译它,在您的系统上定义该环境变量,并使用-cmdenv选项将其名称传递给流作业(文档记录在https://hadoop.apache.org/docs/stable/hadoop-streaming/HadoopStreaming.html#Streaming_Command_Options中)。

TotalOrderPartitioner.java上提供了TotalOrderPartitioner的源代码。在它中,getPartitionFile()定义在从143行开始的两行中,第二行显示,如果没有给定参数,它将使用DEFAULT_PATH作为分区文件名。在第54行,DEFAULT_PATH被定义为"_partition.lst“,而第83行有一个注释,说明它假定在DistributedCache中。基于此,在不修改getPartitionFile()的情况下,应该可以使用_partition.lst作为分区文件名,只要它在DistributedCache中。

这就留下了运行InputSampler将内容写入分区文件的问题。我认为最好的方法是运行一个已经编码的使用TotalOrderPartitioner的Java MapReduce作业,至少获得一个InputSampler输出的示例来确定它的格式。如果可以修改示例作业以处理您想要的数据类型,那么您可以使用它来创建一个可用于您的目的的分区文件。使用TotalOrderPartitioner的几个编码的MapReduce作业是TotalOrderSorting.javaTotalSortMapReduce.java

或者,在twittomatic有一个简单的自定义IntervalPartitioner.java,其中分区文件路径名被硬编码为/partitions.lst,并在sorter目录中提供了一个脚本sample.sh,该脚本使用hadoop、实时twitter feed和sample.py构建partition.lst。让这个系统适应您的需求应该是相当容易的,首先用您的数据样本替换twitter提要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23644545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档