如何将数据从大型机提取到Hadoop

时间:2013-02-28 09:37:29

标签: hadoop mainframe

我在大型机中有文件。我希望将这些数据推送到Hadoop(HDFS)/ HIVE。

我可以将Sqoop用于大型机DB2数据库并将其导入HIVE,但文件如何(例如COBOLVASM等)。

我可以编写任何自定义水槽来源或在此处使用其他替代工具吗?

7 个答案:

答案 0 :(得分:8)

COBOL是一种编程语言,而不是文件格式。如果您需要的是导出COBOL程序生成的文件,您可以使用相同的技术,就好像这些文件是由C,C ++,Java,Perl,PL / I,Rexx等生成的。

通常,您将拥有三种不同的数据源:平面文件,VSAM文件和DBMS(如DB2或IMS)。

DMBS具有导出实用程序,可将数据复制到平面文件中。请记住,DB2中的数据可能会被标准化,因此您可能需要相关表的内容才能理解数据。

可以通过IDCAMS实用程序将VSAM文件导出为平面文件。

我强烈建议您将文件转换为文本格式,然后再将其转移到另一个具有不同代码页的框中。试图处理混合文本(必须翻译其代码页)和二进制文件(不得翻译其代码页但可能必须从大端转换为小端)比预先进行转换更难。

转换可以通过大型机上的SORT实用程序完成。大型机SORT实用程序往往具有广泛的数据操作功能。您可以使用其他机制(其他实用程序,使用您选择的语言编写的自定义代码,购买的软件包),但这是我们在这些情况下倾向于这样做的。

转换完平面文件后,所有数据都是文本,您可以通过FTP或SFTP或FTPS将它们传输到Hadoop盒。

这不是对该主题的详尽报道,但它可以帮助您入门。

答案 1 :(得分:2)

Syncsort已经处理大型机数据40年了(大约50%的大型机已运行软件)他们有一个名为DMX-H的特定产品,可以获取大型机数据,处理数据类型转换,导入cobol复制书和将其直接加载到HDFS中。 Syncsort最近还为Apache Hadoop核心提供了一项新的功能增强功能 我建议您通过www.syncsort.com与他们联系 他们在最近的Cloudera路演中的演示中展示了这一点。

答案 2 :(得分:2)

2018年更新

有许多商业产品可帮助将数据从大型机转移到分布式平台。这是我遇到的那些人的清单。它们都按照问题中所述在Z上获取数据,并将进行一些转换并将数据移动到其他平台。并非完全匹配,但是行业已经发生了变化,将分析数据移动到其他平台的目标正在增长。 Data Virtualization Manager提供了最强大的工具,可以根据我所看到的来转换数据。

SyncSort IronStream

IBM Common Data Provider

Correlog

IBM Data Virtualization Manager

答案 3 :(得分:1)

为什么不:hadoop fs -put <what> <where>

答案 4 :(得分:1)

不拉,但推:使用Dovetailed Technologies的Co:Z Launcher

例如(JCL摘录):

//FORWARD  EXEC PGM=COZLNCH
//STDIN    DD *
hadoop fs -put <(fromfile /u/me/data.csv) /data/data.csv
# Create a catalog table
hive -f <(fromfile /u/me/data.hcatalog)
/*

其中/u/me/data.csv(您在Hadoop中需要的基于大型机的数据)和/u/me/data.hcatalog(相应的HCatalog文件)是z / OS UNIX文件路径。

有关数据恰好是日志记录的更详细示例,请参阅Extracting logs to Hadoop

答案 5 :(得分:0)

cobol布局文件的传输可以通过上面讨论的选项来完成。但是实际将它们映射到Hive表是一项复杂的任务,因为cobol布局具有复杂的格式,如依赖子句,可变长度等,

我试图创建自定义serde来实现,尽管它仍处于初始阶段。但这里有链接,可能会让您知道如何根据您的要求进行反序列化。

https://github.com/rbheemana/Cobol-to-Hive

答案 6 :(得分:0)

Cobrix也许可以为您解决。它是Spark的开源COBOL数据源,可以解析您提到的文件。