- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在Hadoop 1.2.1中实现了一个算法,其中reducer代码依赖于二次排序。但是,当我运行该算法时,一个 reducer 会收到排序的元组,但另一个则不会。我花了很多时间试图找出原因,但没有成功。
有谁知道可能是什么问题吗?我认为这与辅助排序代码有关。
下面是实现二次排序的代码:
public class CompositeKey implements WritableComparable<CompositeKey>{
public String key;
public Integer position;
@Override
public void readFields(DataInput arg0) throws IOException {
key = WritableUtils.readString(arg0);
position = arg0.readInt();
}
@Override
public void write(DataOutput arg0) throws IOException {
WritableUtils.writeString(arg0, key);
arg0.writeLong(position);
}
@Override
public int compareTo(CompositeKey o) {
int result = key.compareTo(o.key);
if(0 == result) {
result = position.compareTo(o.position);
}
return result;
}
}
public class CompositeKeyComparator extends WritableComparator {
protected CompositeKeyComparator() {
super(CompositeKey.class, true);
}
@SuppressWarnings("rawtypes")
@Override
public int compare(WritableComparable w1, WritableComparable w2) {
CompositeKey k1 = (CompositeKey)w1;
CompositeKey k2 = (CompositeKey)w2;
int result = k1.key.compareTo(k2.key);
if(0 == result) {
result = -1* k1.position.compareTo(k2.position);
}
return result;
}
}
public class NaturalKeyGroupingComparator extends WritableComparator {
protected NaturalKeyGroupingComparator() {
super(CompositeKey.class, true);
}
@SuppressWarnings("rawtypes")
@Override
public int compare(WritableComparable w1, WritableComparable w2) {
CompositeKey k1 = (CompositeKey)w1;
CompositeKey k2 = (CompositeKey)w2;
return k1.key.compareTo(k2.key);
}
}
public class NaturalKeyPartitioner extends Partitioner<CompositeKey, ReduceValue> {
@Override
public int getPartition(CompositeKey key, ReduceValue val, int numPartitions) {
int hash = key.key.hashCode();
int partition = hash & Integer.MAX_VALUE % numPartitions;
return partition;
}
//secondary sort
job.setPartitionerClass(NaturalKeyPartitioner.class);
job.setGroupingComparatorClass(NaturalKeyGroupingComparator.class);
job.setSortComparatorClass(CompositeKeyComparator.class);
如果我在伪分布式环境或集群上执行此操作,我会注意到一个 reducer 对元组进行了排序,而另一个则没有。例如,这里是显示两个 reducer 接收的元组的摘录(第一列是主 ket,第二列是辅助 ket):
First reducer:
a1 0
a1 1
a1 11
a1 16
a1 27
a1 28
a1 34
a1 35
a1 37
a1 38
a1 43
a1 44
a1 46
a1 48
a1 50
a1 54
a1 55
a1 56
a1 57
a1 60
a1 61
a1 63
a1 64
a1 66
a1 69
a1 70
a1 72
a1 75
a1 76
a1 78
a1 79
a1 80
a1 84
a1 85
a1 86
a1 87
a1 88
a1 91
a1 92
a1 97
a1 102
a1 106
a1 108
a1 109
a1 110
a1 111
a1 116
a1 118
a1 119
a1 120
Second reducer:
a2 87
a2 115
a2 65
a2 90
a2 68
a2 119
a2 91
a2 0
a2 70
a2 3
a2 8
a2 9
a2 10
a2 71
a2 110
a2 16
a2 17
a2 20
a2 21
a2 23
a2 26
a2 72
a2 27
a2 94
a2 29
a2 30
a2 31
a2 75
a2 95
a2 36
a2 76
a2 117
a2 39
a2 40
a2 41
a2 42
a2 97
a2 79
a2 44
a2 45
a2 98
a2 46
a2 80
a2 49
a2 82
a2 50
a2 83
a2 100
a2 84
a2 112
a2 57
a2 59
a2 113
a2 60
a2 114
a2 61
最佳答案
我认为这是因为在 CompositeKey 的序列化/反序列化逻辑中,您将位置写为长整型,但将其读为整数。这会扰乱比较逻辑,因为您没有测试与写入上下文完全相同的内容。
关于java - Hadoop:二级排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22563204/
我们有数据(此时未分配)要转换/聚合/透视到 wazoo。 我在 www 上看了看,我问的所有答案都指向 hadoop 可扩展、运行便宜(没有 SQL 服务器机器和许可证)、快速(如果你有足够的数据)
这很明显,我们都同意我们可以将 HDFS + YARN + MapReduce 称为 Hadoop。但是,Hadoop 生态系统中的其他不同组合和其他产品会怎样? 例如,HDFS + YARN + S
如果 es-hadoop 只是连接到 HDFS 的 Hadoop 连接器,它如何支持 Hadoop 分析? 最佳答案 我假设您指的是 this project .在这种情况下,ES Hadoop 项目
看完this和 this论文,我决定我想在 MapReduce 上为大型数据集实现分布式体积渲染设置作为我的本科论文工作。 Hadoop 是一个合理的选择吗? Java 不会扼杀一些性能提升或使与 C
我一直在尝试查找有关如何通过命令行提交 hadoop 作业的信息。 我知道命令 - hadoop jar jar-file 主类输入输出 还有另一个命令,我正在尝试查找有关它的信息,但未能找到 - h
Hadoop 服务器在 Kubernetes 中。而Hadoop客户端位于外网。所以我尝试使用 kubernetes-service 来使用 Hadoop 服务器。但是 hadoop fs -put
有没有人遇到奇怪的环境问题,在调用 hadoop 命令时被迫使用 SU 而不是 SUDO? sudo su -c 'hadoop fs -ls /' hdfs Found 4 itemsdrwxr-x
在更改 mapred-site.xml 中的属性后,我给出了一个 tar.bz2 文件、.gz 和 tar.gz 文件作为输入。以上似乎都没有奏效。我假设这里发生的是 hadoop 作为输入读取的记录
如何在 Hadoop Pipes 中获取正在 hadoop 映射器 中执行的输入文件 名称? 我可以很容易地在基于 java 的 map reducer 中获取文件名,比如 FileSplit fil
我想使用 MapReduce 方法分析连续的数据流(通过 HTTP 访问),因此我一直在研究 Apache Hadoop。不幸的是,Hadoop 似乎期望以固定大小的输入文件开始作业,而不是能够在新数
名称节点可以执行任务吗?默认情况下,任务在集群的数据节点上执行。 最佳答案 假设您正在询问MapReduce ... 使用YARN,MapReduce任务在应用程序主数据库中执行,而不是在nameno
我有一个关系A包含 (zip-code). 我还有另一个关系B包含 (name:gender:zip-code) (x:m:1234) (y:f:1234) (z:m:1245) (s:f:1235)
我是hadoop地区的新手。您能帮我负责(k2,list[v2,v2,v2...])形式的输出(意味着将键及其所有关联值组合在一起)的责任是吗? 谢谢。 最佳答案 这是Hadoop的MapReduce
因此,我一直在尝试编写一个hadoop程序,该程序将输入作为一个包含许多文件的文件,并且我希望hadoop程序的输出仅是输入文件的一行。但是我还没有做到这一点。我也不想去 reducer 课。如果有人
我使用的输入文本文件的内容是 1 "Come 1 "Defects," 1 "I 1 "Information 1 "J" 2 "Plain 5 "Project 1
谁能告诉我以下grep命令的作用: $ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+' 最佳答案 http:/
我不了解mapreducer的基本功能,mapreducer是否有助于将文件放入HDFS 或mapreducer仅有助于分析HDFS中现有文件中的内容 我对hadoop非常陌生,任何人都可以指导我理解
CopyFromLocal将从本地文件系统上载数据。 不要放会从任何文件上传数据,例如。本地FS,亚马逊S3 或仅来自本地fs ??? 最佳答案 请找到两个命令的用法。 put ======= Usa
我开始研究hadoop mapreduce。 我是Java和hadoop的初学者,并且了解hadoop mapreduce的编码,但是有兴趣了解它在云中的内部工作方式。 您能否分享一些很好的链接来说明
我一直在寻找Hadoop mapreduce类的类路径。我正在使用Hortonworks 2.2.4版沙箱。我需要这样的类路径来运行我的javac编译器: javac -cp (CLASS_PATH)
我是一名优秀的程序员,十分优秀!