首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EBCDIC到包含COMP类型的ASCII

EBCDIC到包含COMP类型的ASCII
EN

Stack Overflow用户
提问于 2016-08-14 07:15:34
回答 3查看 3K关注 0票数 3

我已经看到了许多工具,如syncsort,informatica等,它们足够有效地将EBCDIC大型机文件转换为ASCII。由于我们的公司规模很小,不想在任何工具上投资,我有一个挑战将EBCDIC大型机文件转换为ASCII。上游是大型机,我正在将整个数据迁移到hdfs中,但由于hdfs的效率不足以处理大型机,我被要求转换为Spark/java rode例程来转换这些大型机EBCDIC文件。我知道当文件被导出时,文件会被转换成ASCII格式,但是压缩十进制的COMP/COMP3不会被转换。我需要写一个逻辑来转换这些大型机EBCDIC部分转换成ASCII的文件,以便我们可以在hadoop中做进一步的处理。因为我在这个网站是新手,甚至不能添加我的示例ebcdic文件。请您考虑以下作为示例文件内容,其中包含ascii以及垃圾字符下面包含一些垃圾,这是在薪资字段,即部门字段,它有薪酬数据type..below是emp.txt文件

101 101GANESH 10000á?

102 102RAMESH 20000欧元

103 103NAGESH 40000欧元

下面是empcopybook

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

回答 3

Stack Overflow用户

发布于 2016-08-15 19:17:49

在Java语言中,有一个库可以与spark一起使用,称为JRecord,用于将EBCDIC二进制文件转换为ASCII码。

你可以在这个人here上找到的代码

这可以通过函数newAPIHadoopFile与Scala集成,在spark中运行它。这段代码是Hadoop代码,但在spark上工作得很好。

票数 1
EN

Stack Overflow用户

发布于 2016-08-22 14:25:46

还有这个选项(它也使用JRecord):

它基于CopybookHadoop,它看起来像是蒂亚戈提到的CopybookInputFormat的克隆。

文档中的任何方式:

此示例从本地二进制文件"file:///home/cdap/DTAR020_FB.bin“”中读取数据,并使用文本区"COBOL Copybook“中给出的模式对其进行解析。它将删除字段"DTAR020-DATE”,并按照文本区中指定的模式生成结构化记录。

代码语言:javascript
复制
{
    "name": "CopybookReader",
    "plugin": {                                                                                                               
        "name": "CopybookReader",
        "type": "batchsource",
        "properties": {
            "drop" : "DTAR020-DATE",
            "referenceName": "Copybook",
            "copybookContents":
                    "000100* \n                                                                                                                                     
                    000200* DTAR020 IS THE OUTPUT FROM DTAB020 FROM THE IML \n
                    000300* CENTRAL REPORTING SYSTEM \n
                    000400* \n
                    000500* CREATED BY BRUCE ARTHUR 19/12/90 \n
                    000600* \n
                    000700* RECORD LENGTH IS 27. \n
                    000800* \n                     
                    000900 03 DTAR020-KCODE-STORE-KEY. \n                                   
                    001000 05 DTAR020-KEYCODE-NO PIC X(08). \n                                                                  
                    001100 05 DTAR020-STORE-NO PIC S9(03) COMP-3. \n
                    001200 03 DTAR020-DATE PIC S9(07) COMP-3. \n
                    001300 03 DTAR020-DEPT-NO PIC S9(03) COMP-3. \n                                          
                    001400 03 DTAR020-QTY-SOLD PIC S9(9) COMP-3. \n
                    001500 03 DTAR020-SALE-PRICE PIC S9(9)V99 COMP-3. ",
              "binaryFilePath": "file:///home/cdap/DTAR020_FB.bin",
              "maxSplitSize": "5"
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2018-08-23 03:12:37

您可以使用Cobrix,它是Spark的COBOL数据源。它是开源的。

您可以使用Spark加载文件,解析记录,并以您想要的任何格式存储它们,包括纯文本,这似乎就是您正在寻找的格式。

免责声明:我为ABSA工作,我是这个库背后的开发者之一。我们的重点是1)易用性,2)性能。

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

https://stackoverflow.com/questions/38937768

复制
相关文章

相似问题

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