- Move data from Oracle to HDFS
- Process the data on HDFS
- Move processed data to Teradata.
还需要每15分钟进行一次整个处理.源数据的量可以接近50GB,并且处理的数据也可以是相同的.
经过互联网搜索后,我发现了
- ORAOOP to move data from Oracle to HDFS (Have the code withing the shell script and schedule it to run at the required interval).
- Do large scale processing either by Custom MapReduce or Hive or PIG.
- SQOOP – Teradata Connector to move data from HDFS to Teradata (again have a shell script with the code and then schedule it).
这是一个正确的选择,这是否适用于所需的时间段(请注意,这不是每日批次)?
我发现的其他选项如下
- STORM (for real time data processing). But i am not able to find the oracle Spout or Teradata bolt out of the box.
- 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
有关更多信息:here和here.请注意,您也可以直接导入带有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的好处是处理将在您的集群中分发,因此您可以完全控制计划.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。