我正在尝试了解terasort的细节,在使用Hadoop的teragen之后,我可以成功地创建输入数据文件。
许多联机文档都说每行包含以下格式的数据:
<10 bytes key><10 bytes rowid><78 bytes filler>\r\n
因此,我下载了第一个部件文件part-m-00000
,然后使用以下命令将rowid从其中删除:
cut -nb 11-20 part-m-00000 | od -c -w10 -Ad
不过,这是我得到的:
0000000 \0 021 0 0 0 0 0 0 0 0
0000010 \n 0 0 0 0 0 0 0 0 0
0000020 0 \n 021 0 0 0 0 0 0 0
0000030 0 0 \n 0 0 0 0 0 0 0
0000040 0 0 0 \n 021 0 0 0 0 0
0000050 0 0 0 0 \n 021 0 0 0 0
0000060 0 0 0 0 0 \n 0 0 0 0
0000070 0 0 0 0 0 0 \n 021 0 0
0000080 0 0 0 0 0 0 0 \n 0 0
0000090 0 0 0 0 0 0 0 0 \n 0
0000100 0 0 0 0 0 0 0 0 0 \n
显然,没有什么比增加的行ID更像我期望的结果了。我想知道我做错了什么?
1条答案
按热度按时间woobm2wo1#
我不确定您引用的是什么在线文档,但TeraGen源代码中的注解明确说明了生成记录的格式:
而且,teragen生成完全符合上述格式的行,在十六进制中,它们看起来像这样(32字节长的
rowid
由我用“〈〈”:标记)如果您感兴趣,还可以检查
GenSort.java
中的行是如何生成的(使用的常量等)。