我需要解析一个ebcdic输入文件格式。使用java,我可以阅读如下内容:
InputStreamReader rdr = new InputStreamReader(new FileInputStream("/Users/rr/Documents/workspace/EBCDIC_TO_ASCII/ebcdic.txt"), java.nio.charset.Charset.forName("ibm500"));
但是在hadoopmapreduce中,我需要通过 RecordReader
到目前为止还没有成功。
有谁能解决这个问题吗?
3条答案
按热度按时间vohkndzv1#
为什么文件在ebcdic??,它需要是???
如果只是文本数据,为什么不在从大型机/as400?发送/拉取文件时将其转换为ascii呢???。
如果文件包含二进制或cobol数字字段,则有几个选项
在大型机上将文件转换为普通文本(大型机排序实用程序擅长于此),然后发送文件并将其转换(转换为ascii)。
如果它是一个cobol文件,那么您可以查看一些开源项目https://github.com/tmalaska/copybookinputformat 或者https://github.com/ianbuss/copybookhadoop
有一些商业软件包用于将大型机cobol数据加载到hadoop中。
ekqde3dh2#
最好的方法是先将数据转换为ascii,然后再加载到hdfs。
eoigrqb63#
您可以尝试通过spark解析它,也许可以使用cobrix,它是spark的开源cobol数据源。