我试图帮助解决一个(已删除的)问题,在这里,关于如何在teragen生成的数据上定义一个Hive外部表。
根据teragen代码的注释,每100个字节的数据(=行)应该以\r \n结尾,但是,它似乎以4个字符结束,其十六进制值为cc dd ff
完整的演示在下面。
有什么想法吗?
谢谢
/** *生成官方的terasort输入数据集。*用户指定了行数和输出目录,这个*类运行一个map/ rows程序来生成数据。*数据格式为:* *
**
使用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将文件移到本地目录并检查HEX值。
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 <--发布于 2017-03-05 11:02:28
我不确定您的terasort的输出是否相对于您在链接中引用的那个TeraGen。如果您从其他来源中打开terasort内容,您将可以看到:
生成正式的GraySort输入数据集。用户指定了行数和输出目录,这个类运行map/ rows程序来生成数据。数据的格式是:(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 - 32字节
88 99 aa bb -常数4字节
41 41 41 42 42 42 32 32 32 34 34 34 39 39 39 35 35 35 42 42 42 31 31 31 38 38 38 44 44 44 -8字节填料
cc dd ff -常数4字节
因此,它不是换行符,而是生成器为每个记录生成的常量4字节。
https://stackoverflow.com/questions/42593345
复制相似问题