

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Detalhes da aplicação Hive para versões anteriores da AMI do Amazon EMR
<a name="emr-3x-hive"></a>

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

Com o uso das versões 2.x e 3.x da AMI do Amazon EMR, os logs do Hive são salvos em `/mnt/var/log/apps/`. Para oferecer suporte a versões simultâneas do Hive, a versão do Hive que você executa determina o nome do arquivo de log, conforme mostrado na tabela a seguir. 


| Versão do Hive | Nome do arquivo de log | 
| --- | --- | 
| 0.13.1 | hive.log  Desde esta desta versão, o Amazon EMR usa um nome de arquivo sem versionamento, `hive.log`. Versões secundárias compartilham o mesmo local de log que a versão principal.   | 
| 0.11.0 | hive\$10110.log   As versões secundárias do Hive 0.11.0, como o Hive 0.11.0.1, compartilham o mesmo local de arquivo de log que o Hive 0.11.0.   | 
| 0.8.1 | hive\$1081.log   As versões secundárias do Hive 0.8.1, como o Hive 0.8.1.1, compartilham o mesmo local de arquivo de log que o Hive 0.8.1.   | 
| 0.7.1 | hive\$107\$11.log   As versões secundárias do Hive 0.7.1, como o Hive 0.7.1.3 e o Hive 0.7.1.4, compartilham o mesmo local de arquivo de log que o Hive 0.7.1.    | 
| 0.7 | hive\$107.log | 
| 0,5 | hive\$105.log | 
| 0.4 | hive.log | 

## Funcionalidade de entrada dividida
<a name="emr-3x-hive-split-input"></a>

Para implementar a funcionalidade de entrada dividida usando as versões do Hive anteriores à versão 0.13.1 (versões da AMI do Amazon EMR anteriores à versão 3.11.0), use o seguinte:

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

Essa funcionalidade se tornou obsoleta com o Hive 0.13.1. Para obter a mesma funcionalidade de formato de entrada dividido na versão 3.11.0 da AMI do Amazon EMR, use o seguinte:

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

## Portas de serviço do Thrift
<a name="emr-3x-hive-thrift-service"></a>

 O Thrift é uma estrutura RPC que define um formato compacto de serialização de binários usado para manter estruturas de dados para análise posterior. Normalmente, o Hive configura o servidor para operar nas seguintes portas. 


| Versão do Hive | Número da porta | 
| --- | --- | 
| 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 obter mais informações sobre serviços do Thrift, consulte [http://wiki.apache.org/thrift/](http://wiki.apache.org/thrift/). 

## Usar o Hive para recuperar partições
<a name="emr-3x-hive-recover-partition"></a>

O Amazon EMR inclui uma instrução na linguagem de consulta Hive que recupera as partições de uma tabela dos dados de tabela localizados no Amazon s3. O exemplo a seguir mostra isso. 

```
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;
```

Os dados e diretórios da partição devem estar na localização especificada na definição de tabela e devem ser nomeados de acordo com a convenção do Hive: por exemplo, `dt=2009-01-01`. 

**nota**  
Depois do Hive 0.13.1, esse recurso tem suporte nativamente usando `msck repair table` e, portanto, `recover partitions` não tem suporte. Para obter mais informações, consulte [https://cwiki.apache. org/confluence/display/Hive/LanguageManual\$1DDL](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL).

## Transmitir uma variável do Hive para um script
<a name="emr-3x-hive-pass-variable"></a>

Para passar uma variável para uma etapa do Hive usando o AWS CLI, digite o comando a seguir, *myKey* substitua pelo nome do seu par de chaves do EC2 e *amzn-s3-demo-bucket* substitua pelo nome do seu bucket. Neste exemplo, `SAMPLE` é um valor de variável precedido pela opção `-d`. Essa variável é definida no script Hive como: `${SAMPLE}`.

**nota**  
Os caracteres de continuação de linha do Linux (\$1) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

```
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/]
```

## Especificar um local de metastore externo
<a name="emr-3x-hive-external-metastore"></a>

O procedimento a seguir mostra como substituir os valores de configuração padrão para a localização da metastore do Hive e iniciar um cluster usando a localização da metastore reconfigurada.

**Para criar uma metastore localizada fora do cluster do EMR**

1. Crie um banco de dados MySQL ou Aurora usando o Amazon RDS.

   Para obter informações sobre como criar um banco de dados do Amazon RDS, consulte [Conceitos básicos do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.html).

1. Modifique seus grupos de segurança para permitir conexões JDBC entre seu banco de dados e o grupo de segurança **ElasticMapReduce-Master**.

   Para obter informações sobre como modificar os grupos de segurança quanto ao acesso, consulte [Grupos de segurança do Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html) no *Guia do usuário do Amazon RDS*.

1. Defina os valores de configuração do JDBC em `hive-site.xml`:

   1. Crie um arquivo de configuração `hive-site.xml` contendo as seguintes informações:

      ```
      <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*é o endereço DNS da instância do Amazon RDS que executa o banco de dados. *username*e *password* são as credenciais do seu banco de dados. Para obter mais informações sobre como se conectar a instâncias de banco de dados MySQL e Aurora, consulte [Conectar-se a uma instância de banco de dados executando o mecanismo de banco de dados MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html) e [Conectar-se a um cluster de banco de dados do Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Connecting.html) no *Guia do usuário do Amazon RDS*.

      Os drivers JDBC são instalados pelo Amazon EMR. 
**nota**  
A propriedade "value" não deve conter espaços ou retornos de carro. Eles devem aparecer todos em uma única linha.

   1. Salve o arquivo `hive-site.xml` em um local no Amazon S3, como `s3://amzn-s3-demo-bucket/hive-site.xml`.

1. Crie um cluster especificando a localização do Amazon S3 do arquivo `hive-site.xml` personalizado.

   O exemplo de comando a seguir demonstra um AWS CLI comando que faz isso.
**nota**  
Os caracteres de continuação de linha do Linux (\$1) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

   ```
   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"]
   ```

## Conectar-se com o Hive usando JDBC
<a name="emr-3x-hive-jdbc"></a>

Para se conectar ao Hive por meio do JDBC você precisa fazer o download do driver do JDBC e instalar um cliente SQL. O exemplo a seguir demonstra o uso do SQL Workbench/J para se conectar ao Hive usando o JDBC.

**Para fazer download dos drivers do JDBC**

1. Faça o download e extraia os drivers apropriados para as versões do Hive que você deseja acessar. A versão do Hive depende da AMI escolhida na criação de um cluster do Amazon EMR.
   + [Drivers JDBC 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)
   + Drivers JDBC do 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)
   + Drivers JDBC do 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 o SQL Workbench/J. Para obter mais informações, consulte [Instalando e iniciando o SQL Workbench/J](http://www.sql-workbench.net/manual/install.html) no Manual do Usuário do SQL Manual. Workbench/J 

1. Crie um túnel do SSH no nó principal do cluster. A porta de conexão é diferente dependendo da versão do Hive. Comandos de exemplo são fornecidos nas tabelas abaixo para usuários do `ssh` do Linux e comandos do PuTTY para usuários do Windows  
**Comandos SSH do Linux**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/emr-3x-hive.html)  
**Configurações do túnel no PuTTY do Windows**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/emr-3x-hive.html)

1. Adicione o driver do JDBC ao SQL Workbench.

   1. Na caixa de diálogo **Select Connection Profile (Selecionar perfil de conexão)**, escolha **Manage Drivers (Gerenciar drivers)**. 

   1. Escolha o ícone **Create a new entry (Criar uma nova entrada)** (página em branco).

   1. No campo **Name (Nome)**, digite **Hive JDBC**.

   1. Em **Library (Biblioteca)**, clique no ícone **Select the JAR file(s) (Selecionar os arquivos JAR)**.

   1. Selecione arquivos JAR, conforme mostrado na tabela a seguir.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/emr-3x-hive.html)

   1. Na caixa de diálogo **Please select one driver (Selecione um driver)**, selecione um driver de acordo com a tabela a seguir e clique em **OK**.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/emr-3x-hive.html)

1. Quando você retornar para a caixa de diálogo Selecionar perfil de conexão, verifique se o campo **Driver** está definido como **JDBC do Hive** e forneça a string de conexão JDBC no campo **URL** de acordo com a tabela a seguir.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/emr/latest/ReleaseGuide/emr-3x-hive.html)

   Se o seu cluster usa a AMI versão 3.3.1 ou posterior, na caixa de diálogo **Select Connection Profile (Selecionar perfil de conexão)**, digite **hadoop** no campo **Username (Nome de usuário)**.