16.20 - Acerca de la copia de tablas con Hadoop - Teradata Data Mover

Teradata® Data Mover Guía del usuario

Product
Teradata Data Mover
Release Number
16.20
Published
Noviembre de 2021
Content Type
Guía del usuario
Publication ID
B035-4101-107K-ESN
Language
Español (España)

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

Este es un ejemplo de copia de una tabla parcial job_definition de Teradata a Hadoop mediante TDCH.
<?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>
Este es un ejemplo de copia de una tabla parcial job_definition de Hadoop a Teradata mediante QueryGrid.
<?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>