首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“行”不应该以换行符(\r\n)结尾吗?

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

Stack Overflow用户
提问于 2017-03-04 07:23:26
回答 1查看 170关注 0票数 1

我试图帮助解决一个(已删除的)问题,在这里,关于如何在teragen生成的数据上定义一个Hive外部表。

根据teragen代码的注释,每100个字节的数据(=行)应该以\r \n结尾,但是,它似乎以4个字符结束,其十六进制值为cc dd ff

完整的演示在下面。

有什么想法吗?

谢谢

/** *生成官方的terasort输入数据集。*用户指定了行数和输出目录,这个*类运行一个map/ rows程序来生成数据。*数据格式为:* *

  • (10字节键) (10字节rowid) (78字节填充) \r \n *
  • 这些键是一组“”中的随机字符。“~”。*
  • rowid是右对齐行id,作为int。*
  • 填充由7个从'A‘到'Z’的10个字符组成。*

**

https://github.com/facebookarchive/hadoop-20/blob/master/src/examples/org/apache/hadoop/examples/terasort/TeraGen.java

使用teragen生成7条记录

代码语言:javascript
复制
hadoop jar /usr/jars/hadoop-examples.jar teragen 7 /user/hive/warehouse/teragen

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

代码语言:javascript
复制
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值。

代码语言:javascript
复制
hdfs dfs -get /user/hive/warehouse/teragen/part-m-00001

od -v -Anone -w20 -tx1

此时,我希望看到0a 0d (\r\n)作为每100个字节的最后2个字符,但我看到的是ee ff

在“行”的末尾没有换行符。

代码语言:javascript
复制
 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 <--
EN

回答 1

Stack Overflow用户

发布于 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字节。

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

https://stackoverflow.com/questions/42593345

复制
相关文章

相似问题

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