teragen的“行”不应该以换行符(\r\n)结尾吗?

kmbjn2e3  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(422)

在这里,我试图回答一个(删除的)问题,关于如何在teragen生成的数据上定义一个hive外部表。
根据teragen代码的注解,每100字节的数据(=行)应以\r\n结尾,但是,似乎以4个字符结尾,十六进制值为cc dd ee ff
下面是完整的演示。
有什么想法吗?
谢谢
/***生成正式的terasort输入数据集。用户指定行数和输出目录,这个类运行map/reduce程序来生成数据。数据格式为:

(10字节键)(10字节行ID)(78字节填充符)\r\n*
这些键是集合“”中的随机字符…'~'.*
rowid是右对齐的行id,表示int.*
填充符由7行10个字符组成,从“a”到“z”。*

https://github.com/facebookarchive/hadoop-20/blob/master/src/examples/org/apache/hadoop/examples/terasort/teragen.java
使用teragen生成7条记录

hadoop jar /usr/jars/hadoop-examples.jar teragen 7 /user/hive/warehouse/teragen

正如预期的那样,我们得到的文件总数据量为700字节

hdfs dfs -ls /user/hive/warehouse/teragen

Found 3 items
-rw-r--r--   1 cloudera supergroup          0 2017-03-03 22:38 /user/hive/warehouse/teragen/_SUCCESS
-rw-r--r--   1 cloudera supergroup        400 2017-03-03 22:38 /user/hive/warehouse/teragen/part-m-00000
-rw-r--r--   1 cloudera supergroup        300 2017-03-03 22:38 /user/hive/warehouse/teragen/part-m-00001

将文件移动到本地目录并检查十六进制值。

hdfs dfs -get /user/hive/warehouse/teragen/part-m-00001

od -v -Anone -w20 -tx1

在这一点上,我希望看到 0a 0d (\r\n)作为每100字节的最后2个字符,但是 ee ff .
“行”的末尾没有换行符。

5c 90 ab 38 ae 52 89 62 15 d7 00 11 30 30 30 30 30 30 30 30
 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 30 30 30 34 88 99 aa bb 41 41 41 41 42 42 42 42 42 42 42 42
 32 32 32 32 34 34 34 34 34 34 34 34 39 39 39 39 35 35 35 35
 42 42 42 42 31 31 31 31 38 38 38 38 44 44 44 44 cc dd ee ff <--
 72 dc 0c a5 1e 33 3f 32 4b 7a 00 11 30 30 30 30 30 30 30 30
 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 30 30 30 35 88 99 aa bb 38 38 38 38 33 33 33 33 42 42 42 42
 38 38 38 38 38 38 38 38 34 34 34 34 37 37 37 37 32 32 32 32
 37 37 37 37 39 39 39 39 30 30 30 30 32 32 32 32 cc dd ee ff <--
 10 43 1a f6 a0 d8 47 b8 c5 5f 00 11 30 30 30 30 30 30 30 30
 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
 30 30 30 36 88 99 aa bb 39 39 39 39 37 37 37 37 34 34 34 34
 41 41 41 41 37 37 37 37 45 45 45 45 44 44 44 44 41 41 41 41
 41 41 41 41 39 39 39 39 38 38 38 38 42 42 42 42 cc dd ee ff <--
xqk2d5yq

xqk2d5yq1#

我不确定terasort的输出是否与链接中引用的teragen相关。如果从其他来源打开terasort内容,您将能够看到:
生成正式的灰度排序输入数据集。用户指定行数和输出目录,这个类运行map/reduce程序来生成数据。数据的格式是:(10字节键)(常量2字节)(32字节rowid)(常量4字节)(48字节填充符)(常量4字节)rowid是作为十六进制数的右对齐行id。
下面我将其与您的第一个链接进行比较:
5c 90 ab 38 ae 52 89 62 15 d7-10字节密钥
00 11-常量2字节
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 34-32字节rowid
88 99 aa bb-常量4字节
41 41 41 42 42 42 42 42 42 42 42 32 32 34 34 34 34 34 39 39 39 35 35 35 42 42 42 42 42 31 31 31 38 38 44 44 44 44-8字节填充符
cc dd ee ff-常量4字节
所以它不是换行符,而是生成器为每条记录生成的一个常量4字节。

相关问题