写入hdfs序列文件

时间:2014-05-08 06:05:09

标签: hadoop hdfs

我要求我的MAP应该读取一个大的HDFS文本文件,并将其作为“text_file_name text_file_contents”作为键:值对写入序列文件中。

My Mapper然后将此序列文件的路径发送到Reducer。

目前我正在做的是:

  • 从文本文件中读取所有行并继续将它们附加到Text()变量(例如“内容”)。
  • 一旦读完整个文本文件,将“内容”写入序列文件

但是,我不确定Text()是否能够存储大文件。因此想要做以下事情:

  • 从文本文件中读取一行
  • 使用(writer.append(key,value)将其写入序列文件,其中“writer”是SequenceFile.Writer)
  • 执行上述操作,直到写完整个文本文件。

这种方法存在的问题是,它在我写入序列文件的每一行写下“密钥”。

所以,只想知道,

  • 如果我继续追加它,Text()可以存储任何大小的文件吗?
  • 我怎样才能避免在所有写入中写入“key”,而不是第一个?
  • 可以使用writer.appendRaw()。我没有得到足够的关于此功能的文档。

1 个答案:

答案 0 :(得分:0)

回答你的问题:

  1. Text()最多可以存储2GB。
  2. 您可以通过编写NullWritable或将key.ignore设置为false来避免编写密钥。
  3. 但是当你第一次使用第二种方法时,你也无法写下你的钥匙。所以最好使用NullWritable