hadoop—将数据从oracle移动到hdfs,处理并从hdfs移动到teradata

jgwigjjp  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(341)

我的要求是
将数据从oracle移动到hdfs
处理hdfs上的数据
将处理后的数据移动到teradata。
它还需要每15分钟进行一次整个处理。源数据的容量可能接近50gb,处理后的数据也可能相同。
在网上搜索了很多之后,我发现
oraoop将数据从oracle移动到hdfs(将代码与shell脚本一起使用,并计划以所需的时间间隔运行)。
通过自定义mapreduce或hive或pig进行大规模处理。
sqoop-teradata连接器,用于将数据从HDF移动到teradata(同样要有一个包含代码的shell脚本,然后对其进行调度)。
首先,这是正确的选择吗?在规定的时间段内,这是否可行(请注意,这不是每天的批次左右)?
我发现的其他选项如下
storm(用于实时数据处理)。但我无法找到甲骨文喷口或teradata螺栓的盒子。
任何开源etl工具,比如talend或pentaho。
请分享您对这些选择以及任何其他可能性的想法。

4szc88ey

4szc88ey1#

如果您担心将数据从oracle移动到hdfs的开销或延迟,一个可能的商业解决方案可能是dell software的shareplex。他们最近发布了一个用于hadoop的连接器,它允许您将表数据从oracle复制到hadoop。更多信息请点击此处。
我不确定是否每次都需要重新处理整个数据集,或者是否可以只使用delta。shareplex还支持将更改数据复制到jms队列。可以创建一个从该队列中读取的喷口。您也可以构建自己的基于触发器的解决方案,但这需要一些工作。
透露一下,我在戴尔软件公司工作。

crcmnpdw

crcmnpdw2#

看来你有几个问题,让我们试着把它分解一下。

在hdfs中导入

看来你在找sqoop。sqoop是一种工具,可以让您轻松地将数据传入/传出hdfs,并可以以本机方式连接到各种数据库,包括oracle。sqoop与oraclejdbc瘦驱动程序兼容。以下是如何从oracle转换到hdfs:

sqoop import --connect jdbc:oracle:thin@myhost:1521/db --username xxx --password yyy --table tbl --target-dir /path/to/dir

更多信息:这里和这里。注意,您还可以使用sqoop直接导入配置单元表,这样可以方便地进行分析。

加工

正如您所指出的,由于您的数据最初是关系型的,因此使用hive进行分析是一个好主意,因为您可能更熟悉类似sql的语法。pig是更纯粹的关系代数,语法也不像sql,这更像是一个偏好问题,但这两种方法都应该可以很好地工作。
因为您可以使用sqoop直接将数据导入到配置单元中,所以您的数据应该可以在导入之后直接进行处理。
在hive中,您可以运行查询并告诉它将结果写入hdfs:

hive -e "insert overwrite directory '/path/to/output' select * from mytable ..."

导出到teradata

cloudera去年发布了一个teradata for sqoop的连接器,如这里所述,所以您应该看看这个连接器,因为它看起来正是您想要的。以下是您的操作方法:

sqoop export --connect jdbc:teradata://localhost/DATABASE=MY_BASE --username sqooptest --password xxxxx --table MY_DATA --export-dir /path/to/hive/output

整个过程在任何时间段都是绝对可行的,最终重要的是集群的大小,如果您想快速扩展集群,请根据需要进行扩展。hive和sqoop的好处是处理将分布在集群中,因此您可以完全控制调度。

相关问题