我在大型机中有文件。我希望将这些数据推送到Hadoop(HDFS)/ HIVE。
我可以将Sqoop用于大型机DB2数据库并将其导入HIVE,但文件如何(例如COBOL
,VASM
等)。
我可以编写任何自定义水槽来源或在此处使用其他替代工具吗?
答案 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提供了最强大的工具,可以根据我所看到的来转换数据。
答案 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来实现,尽管它仍处于初始阶段。但这里有链接,可能会让您知道如何根据您的要求进行反序列化。
答案 6 :(得分:0)
Cobrix也许可以为您解决。它是Spark的开源COBOL数据源,可以解析您提到的文件。