我已经看到许多工具,如syncsort、informatica等,它们足够有效地将ebcdic大型机文件转换为ascii。由于我们的公司规模很小,不想投资任何工具,我有一个挑战,将ebcdic大型机文件转换为ascii。上游是大型机,我正在将整个数据迁移到hdfs中,但由于hdfs的效率不足以处理大型机,我被要求使用spark/java例程转换这些大型机ebcdic文件。我知道当文件被导出时,文件被转换成ascii,但是压缩十进制,comp/comp3不会被转换。我需要编写一个逻辑来将这些大型机ebcdic部分转换的文件转换为ascii,这样我们就可以在hadoop中进行进一步的处理。因为我在这个网站是新的,甚至不能添加我的样本ebcdic文件。请您考虑下面的示例文件内容,其中包含ascii以及垃圾邮件字符。下面包含一些垃圾邮件,这些垃圾邮件位于薪资字段之后,即部门字段,它具有comp数据类型。下面是emp.txt文件
101甘尼什10000á?
1022万€
1034万纳格什€
下面是一本复印本
01 EMPLOYEE-DETAILS.
05 EMP-ID PIC 9(03).
05 EMP-NAME PIC X(10).
05 EMP-SAL PIC 9(05).
05 DEPT PIC 9(3) COMP-3.
3条答案
按热度按时间vnzz0bqm1#
java中有一个库,可以与spark一起使用,叫做jrecord,用于将ebcdic的二进制文件转换为ascii。
你能从这家伙身上找到的密码
这可以与scala的函数集成
newAPIHadoopFile
在Spark中运行。这段代码是一个hadoop代码,但可以与spark一起使用。cuxqih212#
您可以使用cobrix,它是spark的cobol数据源。它是开源的。
您可以使用spark加载文件、解析记录并以您想要的任何格式存储它们,包括纯文本,这似乎正是您要查找的内容。
免责声明:我为absa工作,我是这个库的开发人员之一。我们的重点是1)易用性,2)性能。
2w3kk1z53#
还有这个选项(它也使用jrecord):
https://wiki.cask.co/display/ce/plugin+for+cobol+copybook+reader+-+fixed+length
它基于copybookhadoop,看起来像是thiago提到的copybookinputformat的克隆。
从文件中可以看出:
此示例从本地二进制文件“file:///home/cdap/dtar020\u fb.bin”读取数据,并使用文本区域“cobol copybook”中给定的模式对其进行解析。它将删除字段“dtar020 date”,并使用文本区域中指定的模式生成结构化记录。