lea*_*man 7 oracle hadoop teradata apache-storm
我的要求是
- 将数据从Oracle移动到HDFS
- 处理HDFS上的数据
- 将处理后的数据移至Teradata.
还需要每15分钟进行一次整个处理.源数据的量可以接近50GB,并且处理的数据也可以是相同的.
在网上搜索了很多,我发现了
- ORAOOP将数据从Oracle移动到HDFS(使用shell脚本编写代码并安排它以所需的时间间隔运行).
- 通过Custom MapReduce或Hive或PIG进行大规模处理.
- SQOOP - 用于将数据从HDFS移动到Teradata的Teradata Connector(再次使用带有代码的shell脚本然后安排它).
这是一个正确的选择,这是否适用于所需的时间段(请注意,这不是每日批次左右)?
我发现的其他选项如下
- STORM(用于实时数据处理).但我无法找到开箱即用的oracle Spout或Teradata螺栓.
- 任何开源ETL工具,如Talend或Pentaho.
请分享您对这些选项的想法以及任何其他可能性.
看起来你有几个问题,所以让我们试着把它分解.
看来你正在寻找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
Run Code Online (Sandbox Code Playgroud)
有关更多信息:此处和此处.请注意,您也可以直接导入带有Sqoop的Hive表,这样可以方便地进行分析.
如您所述,由于您的数据最初是关系型的,因此使用Hive进行分析是个好主意,因为您可能更熟悉类似SQL的语法.Pig是更纯粹的关系代数,语法不是类似SQL的,它更像是一个偏好问题,但两种方法都应该可以正常工作.
由于您可以使用Sqoop直接将数据导入Hive,因此您的数据在导入后应该可以直接处理.
在Hive中,您可以运行查询并告诉它在HDFS中写入结果:
hive -e "insert overwrite directory '/path/to/output' select * from mytable ..."
Run Code Online (Sandbox Code Playgroud)
Cloudera公司去年发布的连接器为Teradata为Sqoop所描述的在这里,所以你应该看一看,因为这看起来正是你想要的.以下是您将如何做到这一点:
sqoop export --connect jdbc:teradata://localhost/DATABASE=MY_BASE --username sqooptest --password xxxxx --table MY_DATA --export-dir /path/to/hive/output
Run Code Online (Sandbox Code Playgroud)
整个过程绝对可以在你想要的任何时间段内完成,最终重要的是群集的大小,如果你想快速,那么根据需要扩展你的群集.Hive和Sqoop的好处是处理将在您的集群中分发,因此您可以完全控制计划.