Data Mover permite copiar datos entre Teradata Database y Hadoop por medio de TDCH o QueryGrid. Copiar datos entre Teradata y Hadoop es similar a copiar datos entre sistemas Teradata, con la excepción de que si un usuario está copiando de Teradata a Hadoop, overwrite_existing_objects se establece como false y la tabla de destino existe, Data Mover anexa los datos parciales a la tabla de Hive existente y no elimina ninguna fila de la tabla. No se utilizan las funciones DELETE/INSERT, UPDATE ni MERGE.
Tanto QueryGrid como TDCH permiten copiar tablas parciales entre Teradata y Hadoop. QueryGrid permite copiar tablas parciales de Teradata a Hadoop y de Hadoop a Teradata. TDCH permite copiar tablas parciales de Teradata a Hadoop, pero no de Hadoop a Teradata. Cuando TDCH se utiliza para copiar una tabla parcial de Hadoop a Teradata, Data Mover copia toda la tabla en una tabla provisional en Teradata Database y, a continuación, ejecuta el where clause de la tabla provisional en la tabla de destino.
Notas sobre el uso
- TDCH se selecciona automáticamente cuando no se proporciona un servidor externo.
- Data Mover admite únicamente Hive en Hadoop.
- El usuario de Hive debe tener permisos de lectura y escritura en los objetos Hadoop. Si los permisos no son los correctos, el trabajo no se ejecutará.
- Cuando se utiliza QueryGrid, el usuario de Hive especificado en la definición de trabajo de Data Mover y en el servidor externo debe tener los mismos permisos de lectura y escritura en los objetos de Hadoop subyacentes.
Ejemplos de archivos XML de copia parcial
<?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>
<?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>