

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Detalles específicos de las aplicaciones de Hive para versiones anteriores de la AMI de Amazon EMR
<a name="emr-3x-hive"></a>

## Archivos de registro
<a name="emr-3x-hive-log-files"></a>

Cuando se utilizan las versiones 2.x y 3.x de la AMI de Amazon EMR, los registros de Hive se almacenan en `/mnt/var/log/apps/`. Para poder admitir las versiones simultáneas de Hive, la versión de Hive que ejecuta determina el nombre de archivo de registro, tal y como se muestra en la siguiente tabla. 


| Versión de Hive | Nombre de archivo de registro | 
| --- | --- | 
| 0.13.1 | hive.log  A partir de esta versión, Amazon EMR utiliza un nombre de archivo sin versión, `hive.log`. Las versiones secundarias comparten la misma ubicación de registro que la versión principal.   | 
| 0.11.0 | hive\$10110.log   Las versiones menores de Hive 0.11.0, tales como 0.11.0.1, comparten la misma ubicación de archivo de registro que Hive 0.11.0.   | 
| 0.8.1 | hive\$1081.log   Las versiones menores de Hive 0.8.1, tales como Hive 0.8.1.1, comparten la misma ubicación de archivo de registro que Hive 0.8.1.   | 
| 0.7.1 | hive\$107\$11.log   Las versiones menores de Hive 0.7.1, tales como Hive 0.7.1.3 y Hive 0.7.1.4, comparten la misma ubicación de archivo de registro que Hive 0.7.1.    | 
| 0.7 | hive\$107.log | 
| 0,5 | hive\$105.log | 
| 0.4 | hive.log | 

## Funcionalidad de entrada de división
<a name="emr-3x-hive-split-input"></a>

Para implementar la funcionalidad de entrada de división utilizando versiones de Hive anteriores a la 0.13.1 (versiones de la AMI de Amazon EMR anteriores a la 3.11.0), utilice lo siguiente:

```
hive> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveCombineSplitsInputFormat;
hive> set mapred.min.split.size=100000000;
```

Esta funcionalidad se dejó de utilizar con Hive 0.13.1. Para obtener la misma funcionalidad de formato de entrada de división en la versión 3.11.0 de la AMI de Amazon EMR, utilice lo siguiente:

```
set hive.hadoop.supports.splittable.combineinputformat=true;
```

## Puertos de servicio de Thrift
<a name="emr-3x-hive-thrift-service"></a>

 Thrift es un marco de trabajo de RPC que define un formato de serialización binario compacto utilizado para conservar estructuras de datos para su análisis posterior. Normalmente, Hive configura el servidor para operar en los siguientes puertos. 


| Versión de Hive | Número de puerto | 
| --- | --- | 
| Hive 0.13.1 | 10000 | 
| Hive 0.11.0 | 10004 | 
| Hive 0.8.1 | 10003 | 
| Hive 0.7.1 | 10002 | 
| Hive 0.7 | 10001 | 
| Hive 0.5 | 10000 | 

 Para obtener más información sobre los servicios de thrift, consulte [http://wiki.apache.org/thrift/](http://wiki.apache.org/thrift/). 

## Uso de Hive para recuperar particiones
<a name="emr-3x-hive-recover-partition"></a>

Amazon EMR incluye una instrucción en el lenguaje de consultas de Hive que recupera las particiones de una tabla de los datos de tabla ubicados en Amazon S3. El ejemplo siguiente lo muestra. 

```
CREATE EXTERNAL TABLE (json string) raw_impression 
PARTITIONED BY (dt string) 
LOCATION 's3://elastic-mapreduce/samples/hive-ads/tables/impressions';
ALTER TABLE logs RECOVER PARTITIONS;
```

Los datos y los directorios de la partición deben estar en la ubicación especificada en la definición de tabla y deben nombrarse de acuerdo con la convención de Hive: por ejemplo, `dt=2009-01-01`. 

**nota**  
Después de Hive 0.13.1 esta capacidad se admite de forma nativa `msck repair table` y, por tanto, no se admite `recover partitions`. [Para obtener más información, consulte https://cwiki.apache. org/confluence/display/Hive/LanguageManual\$1DDL](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL).

## Pasar una variable de Hive a un script
<a name="emr-3x-hive-pass-variable"></a>

Para pasar una variable a un paso de Hive mediante el AWS CLI, escriba el siguiente comando, *myKey* sustitúyala por el nombre de su key pair de EC2 y *amzn-s3-demo-bucket* sustitúyala por el nombre de su bucket. En este ejemplo, `SAMPLE` es un valor de variable precedido por el modificador `-d`. Esta variable se define en el script de Hive como: `${SAMPLE}`.

**nota**  
Se incluyen caracteres de continuación de línea de Linux (\$1) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

```
aws emr create-cluster --name "Test cluster" --ami-version 3.9 \
--applications Name=Hue Name=Hive Name=Pig \
--use-default-roles --ec2-attributes KeyName=myKey \
--instance-type m3.xlarge --instance-count 3 \
--steps Type=Hive,Name="Hive Program",ActionOnFailure=CONTINUE,\
Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/response-time-stats.q,-d,\
INPUT=s3://elasticmapreduce/samples/hive-ads/tables,-d,OUTPUT=s3://amzn-s3-demo-bucket/hive-ads/output/,\
-d,SAMPLE=s3://elasticmapreduce/samples/hive-ads/]
```

## Especificación de la ubicación de un metaalmacén externo
<a name="emr-3x-hive-external-metastore"></a>

El siguiente procedimiento muestra cómo omitir los valores de configuración predeterminados para la ubicación del metaalmacén de Hive e iniciar un clúster con la ubicación de metaalmacén reconfigurada.

**Para crear un metaalmacén situado fuera del clúster de EMR**

1. Cree una base de datos MySQL o Aurora mediante Amazon RDS.

   Para obtener información acerca de cómo crear una base de datos de Amazon RDS, consulte [Introducción a Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.html).

1. **Modifique sus grupos de seguridad para permitir las conexiones JDBC entre su base de datos y el ElasticMapReduce grupo de seguridad -Master.**

   Para más información acerca de cómo modificar los grupos de seguridad para el acceso, consulte [Grupos de seguridad de Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html) en la *Guía del usuario de Amazon RDS*.

1. Ajuste los valores de configuración de JDBC en `hive-site.xml`:

   1. Cree un archivo de configuración `hive-site.xml` que contenga lo siguiente:

      ```
      <configuration>
        <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mariadb://hostname:3306/hive?createDatabaseIfNotExist=true</value>
          <description>JDBC connect string for a JDBC metastore</description>
        </property>
        <property>
          <name>javax.jdo.option.ConnectionUserName</name>
          <value>hive</value>
          <description>Username to use against metastore database</description>
        </property>
        <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>password</value>
          <description>Password to use against metastore database</description>
        </property>
      </configuration>
      ```

      *hostname*es la dirección DNS de la instancia de Amazon RDS que ejecuta la base de datos. *username*y *password* son las credenciales de su base de datos. Para más información sobre la conexión a instancias de base de datos de MySQL y Aurora, consulte [Conexión a la instancia de base de datos que ejecuta el motor de base de datos de MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html) y [Conexión a un clúster de base de datos de Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Connecting.html) en la *Guía del usuario de Amazon RDS*.

      Amazon EMR instala los controladores de JDBC. 
**nota**  
La propiedad value no debe contener espacios ni saltos de línea. Debe aparecer todo en una única línea.

   1. Guarde el archivo `hive-site.xml` en una ubicación de Amazon S3 como, por ejemplo, `s3://amzn-s3-demo-bucket/hive-site.xml`.

1. Cree un clúster especificando la ubicación en Amazon S3 del archivo `hive-site.xml` personalizado.

   El siguiente comando de ejemplo muestra un AWS CLI comando que hace esto.
**nota**  
Se incluyen caracteres de continuación de línea de Linux (\$1) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

   ```
   aws emr create-cluster --name "Test cluster" --ami-version 3.10 \
   --applications Name=Hue Name=Hive Name=Pig \
   --use-default-roles --ec2-attributes KeyName=myKey \
   --instance-type m3.xlarge --instance-count 3 \
   --bootstrap-actions Name="Install Hive Site Configuration",\
   Path="s3://region.elasticmapreduce/libs/hive/hive-script",\
   Args=["--base-path","s3://elasticmapreduce/libs/hive","--install-hive-site",\
   "--hive-site=s3://amzn-s3-demo-bucket/hive-site.xml","--hive-versions","latest"]
   ```

## Conectarse a Hive mediante JDBC
<a name="emr-3x-hive-jdbc"></a>

Para conectarse a Hive a través de JDBC es necesario que descargue el controlador JDBC e instale un cliente SQL. En el siguiente ejemplo, se muestra el uso de SQL Workbench/J para conectarse a Hive mediante JDBC.

**Para descargar controladores de JDBC**

1. Descargue y extraiga los controladores adecuados para las versiones de Hive a las que desea acceder. La versión de Hive difiere en función de la AMI que elija al crear un clúster de Amazon EMR.
   + [Controladores JDBC de Hive 0.13.1: JDBC\$11.0.4.1004.zip https://amazon-odbc-jdbc-drivers.s3.amazonaws.com/public/ AmazonHive](https://amazon-odbc-jdbc-drivers.s3.amazonaws.com/public/AmazonHiveJDBC_1.0.4.1004.zip)
   + Controladores JDBC de Hive 0.11.0: [https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.11.0](https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.11.0)
   + Controladores JDBC de Hive 0.8.1: [https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.8.1](https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.8.1)

1. [Instale SQL Workbench/J. Para obtener más información, consulte Instalación e inicio de SQL Workbench/J en el manual del usuario del manual de SQL.](http://www.sql-workbench.net/manual/install.html) Workbench/J 

1. Cree un túnel de SSH en el nodo principal del clúster. El puerto de conexión varía en función de la versión de Hive. En las tablas siguientes se proporcionan comandos de ejemplo para usuarios `ssh` de Linux y comandos de PuTTY para usuarios de Windows.  
**Comandos SSH de Linux**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/emr-3x-hive.html)  
**Configuración del túnel PuTTY para Windows**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/emr-3x-hive.html)

1. Añadir el controlador JDBC a SQL Workbench.

   1. En el cuadro de diálogo **Select Connection Profile (Seleccionar perfil de conexión)**, elija **Manage Drivers (Administrar controladores)**. 

   1. Elija el icono **Create a new entry (Crear entrada nueva)** (página en blanco).

   1. En el campo **Name (Nombre)**, escriba **Hive JDBC**.

   1. En **Library (Biblioteca)**, haga clic en el icono **Select the JAR file(s) (Seleccionar los archivos JAR)**.

   1. Seleccione los archivos JAR que se muestran en la siguiente tabla.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/emr-3x-hive.html)

   1. En el cuadro de diálogo **Please select one driver (Seleccione un controlador)**, seleccione un controlador en función de la siguiente tabla y haga clic en **OK (Aceptar)**.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/emr-3x-hive.html)

1. Cuando vuelva al cuadro de diálogo **Seleccionar perfil de conexión**, compruebe que el campo **Controlador** esté definido en **JDBC de Hive** y proporcione la cadena de conexión de JDBC en el campo **URL** de acuerdo con la siguiente tabla.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/emr/latest/ReleaseGuide/emr-3x-hive.html)

   Si el clúster utiliza la versión 3.3.1 o posterior de la AMI, en el cuadro de diálogo **Select Connection Profile (Seleccionar perfil de conexión)**, escriba **hadoop** en el campo **Username (Nombre de usuario)**.