Data Moverでは、TDCHまたはQueryGridを使った、Teradata DatabaseとHadoop間のデータのコピーをサポートします。TeradataとHadoop間のデータのコピーは、Teradataシステム間のデータのコピーと同様ですが、ユーザーがTeradataからHadoopにコピーを行なう場合に、overwrite_existing_objectsがfalseに設定されていて、ターゲット テーブルが存在するときには、Data Moverは部分的なデータを既存のHiveテーブルに付加し、テーブルの行を一切削除しません。DELETE/INSERT、UPDATE、MERGE関数は使用されません。
QueryGridとTDCHは両方とも、TeradataとHadoop間の部分テーブルのコピーをサポートします。QueryGridは、TeradataからHadoop、HadoopからTeradataへの部分テーブルのコピーをサポートします。TDCHは、TeradataからHadoopへの部分テーブルのコピーをサポートしますが、HadoopからTeradataへのコピーはサポートしません。TDCHを使用して、HadoopからTeradataに部分テーブルをコピーする場合、Data Moverは、テーブル全体をTeradata Databaseのステージング テーブルにコピーし、ステージング テーブルからターゲット テーブルに対してwhere clauseを実行します。
使用上の注意
- TDCHは、外部サーバーが提供されていない場合に自動的に選択されます。
- Data MoverはHadoop上のHiveのみをサポートします。
- Hiveユーザーには、Hadoopオブジェクトへの読み取り権限と書き込み権限が必要です。正しくない権限で実行すると、ジョブが失敗する原因となります。
- QueryGridを使用する場合、Data Moverジョブ定義と外部サーバー上で指定されたHiveユーザーには、基盤となるHadoopオブジェクトへの同じ読み取り権限と書き込み権限が必要となります。
サンプルの部分コピーXMLファイル
以下は、TDCHを使って、TeradataからHadoopへのjob_definition部分テーブルのコピーを実行するサンプル コードです。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <dmCreate xmlns="http://schemas.teradata.com/dataMover/v2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.teradata.com/dataMover/v2009/DataMover.xsd"> <!-- source td credentials --> <source_tdpid>td_database</source_tdpid> <source_user>username</source_user> <source_password>password</source_password> <!-- target hadoop credentials --> <target_hadoop_system> <webHCat_url>http://webhcat_host:50111</webHCat_url> <oozie_url>http://oozie_host:11000</oozie_url> <file_system_url>http://webhdfs_or_httpfs_host:50070</file_system_url> <hive_user>hive</hive_user> </target_hadoop_system> <!-- true to truncate table on hive, false to append the data to the table on hive--> <overwrite_existing_objects>false</overwrite_existing_objects> <!-- target database on hive --> <target_database> <name>target_database</name> </target_database> <!-- object selection. in this case, we are moving source table on (td) to default target_database on hive --> <database selection="unselected"> <name>source_database</name> <table selection="included"> <name>source_table</name> <target_name>target_table_optional</target_name> <!-- where clause to select partial table on source --> <sql_where_clause> <![CDATA[WHERE columnValue <= num ]]></sql_where_clause> </table> </database> </dmCreate>
以下は、QueryGridを使って、HadoopからTeradataへのjob_definition部分テーブルのコピーを実行するサンプル コードです。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <dmCreate xmlns="http://schemas.teradata.com/dataMover/v2009" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.teradata.com/dataMover/v2009/DataMover.xsd"> <!-- source hadoop credentials --> <source_hadoop_system> <webHCat_url>http://webhcat_host:50111</webHCat_url> <oozie_url>http://oozie_host:11000</oozie_url> <file_system_url>http://webhdfs_or_httpfs_host:50070</file_system_url> <hive_user>hive</hive_user> </source_hadoop_system> <!-- target td credentials --> <target_tdpid>td_database</target_tdpid> <target_user>username</target_user> <target_password>password</target_password> <!-- target database on hive --> <target_database> <name>target_database</name> </target_database> <use_foreign_server> <name>querygrid_foreign_server_name</name> </use_foreign_server> <!-- object selection. in this case, we are moving source table on (td) to default target_database on hive --> <database selection="unselected"> <name>source_hive_database</name> <table selection="included"> <name>source_table</name> <target_name>target_table_optional</target_name> <!-- where clause to select partial table on source --> <sql_where_clause> <![CDATA[WHERE columnValue <= num ]]></sql_where_clause> </table> </database> </dmCreate>