将数据从oracle移动到HDFS,处理并从HDFS移动到Teradata

我的要求是
  1. Move data from Oracle to HDFS
  2. Process the data on HDFS
  3. Move processed data to Teradata.

还需要每15分钟进行一次整个处理.源数据的量可以接近50GB,并且处理的数据也可以是相同的.

经过互联网搜索后,我发现了

  1. ORAOOP to move data from Oracle to HDFS (Have the code withing the shell script and schedule it to run at the required interval).
  2. Do large scale processing either by Custom MapReduce or Hive or PIG.
  3. SQOOP – Teradata Connector to move data from HDFS to Teradata (again have a shell script with the code and then schedule it).

这是一个正确的选择,这是否适用于所需的时间段(请注意,这不是每日批次)?

我发现的其他选项如下

  1. STORM (for real time data processing). But i am not able to find the oracle Spout or Teradata bolt out of the Box.
  2. Any open source ETL tools like Talend or Pentaho.

分享您对这些选项的想法以及任何其他可能性.

看起来你有几个问题,所以让我们试着把它分解.

在HDFS中导入

看起来你正在寻找Sqoop. Sqoop是一个工具,可以让你轻松地将数据传入/传出HDFS,并可以本地连接到包括Oracle在内的各种数据库. Sqoop与Oracle JDBC瘦驱动程序兼容.以下是从Oracle转移到HDFS的方法

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

有关更多信息:herehere.请注意,您也可以直接导入带有Sqoop的Hive表,这样可以方便地进行分析.

处理

正如您所指出的,由于您的数据最初是关系型的,因此使用Hive进行分析是个好主意,因为您可能更熟悉类似sql的语法. Pig是更纯粹的关系代数,语法不是类似sql的,它更像是一个偏好问题,但两种方法都应该可以正常工作.

由于您可以使用Sqoop直接将数据导入Hive,因此您的数据在导入后应该可以直接处理.

在Hive中,您可以运行查询并告诉它在HDFS中写入结果:

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

导出到TeraData

Cloudera去年发布了一个连接Teradata for Sqoop的连接器,如here所述,所以你应该看一下,看起来就像你想要的那样.您将如何做到这一点:

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

整个过程绝对可以在你想要的任何时间段内完成,最终重要的是集群的大小,如果你想快速,那么根据需要扩展你的集群. Hive和Sqoop的好处是处理将在您的集群中分发,因此您可以完全控制计划.

相关文章

数据库版本:11.2.0.4 RAC(1)问题现象从EM里面可以看到,在23号早上8:45~8:55时,数据库等待会话暴增...
(一)问题背景最近在对一个大约200万行数据的表查看执行计划时,发现存在异常,理论上应该返回100多万...
(一)删除备份--DELETE命令用于删除RMAN备份记录及相应的物理文件。当使用RMAN执行备份操作时,会在RM...
(1)DRA介绍 数据恢复顾问(Data Recovery Advise)是一个诊断和修复数据库的工具,DRA能够修复数据文...
RMAN(Recovery Manager)是Oracle恢复管理器的简称,是集数据库备份(backup)、修复(restore)和恢复...
(1)备份对象 可以使用RMAN进行的备份对象如下: --整个数据库:备份所有的数据文件和控制文件; --数...