使用自定义块结构将文件加载到HDFS

时间:2013-01-16 06:32:03

标签: hadoop hdfs

我想将SegY文件加载到3节点Apache Hadoop集群的HDFS上。

总而言之,SegY文件包含:

  1. 3200字节文字标题
  2. 400字节二进制标题
  3. 可变字节数据
  4. 99.99%的文件大小是由可变字节数据引起的,该数据是数千个连续跟踪的集合。对于任何有意义的SegY文件,它必须具有文本标题+二进制标题+至少一个数据跟踪。 我想要实现的是将一个大的SegY文件拆分到Hadoop集群上,以便在每个节点上有一个较小的SegY文件可供本地处理。

    方案如下:

    1. SegY文件很大(超过10GB)并且位于NameNode计算机的本地文件系统上
    2. 文件将在节点上拆分,每个节点都有一个具有严格结构的小型SegY文件 - 3200字节文本标题 + 400字节二进制标题 +可变字节数据 很明显,我不能盲目地使用FSDataOutputStream或hadoop fs -copyFromLocal,因为这可能无法确保需要更大文件块的格式

1 个答案:

答案 0 :(得分:0)

似乎a Github project做了类似的事情:

suhdp的加载命令将在本地计算机上采用SEG-Y或SU格式的文件,格式化它们以便与Hadoop一起使用,并将它们复制到Hadoop集群。

suhdp load -input <local SEG-Y/SU files> -output <HDFS target> [-cwproot <path>]

这可能不是您所需要的,但这似乎是我能找到将SEG-Y文件加载到HDFS的最简单方法。