

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Specifiche dell'applicazione Hive per versioni AMI di Amazon EMR precedenti
<a name="emr-3x-hive"></a>

## File di log
<a name="emr-3x-hive-log-files"></a>

Con le versioni AMI 2.x e 3.x di Amazon EMR, i log Hive sono salvati in `/mnt/var/log/apps/`. Per supportare versioni Hive simultanee, la versione di Hive che esegui determina il nome di file di log, come illustrato nella seguente tabella. 


| Versione di Hive | Nome del file di log | 
| --- | --- | 
| 0.13.1 | hive.log  A partire da questa versione, Amazon EMR utilizza un nome di file senza versione, ossia `hive.log`. Le versioni minori condividono la stessa posizione di log della versione principale.   | 
| 0.11.0 | hive\$10110.log   Le versioni minori di Hive 0.11.0, ad esempio 0.11.0.1, condividono la stessa posizione di file di log di Hive 0.11.0.   | 
| 0.8.1 | hive\$1081.log   Le versioni minori di Hive 0.8.1, ad esempio Hive 0.8.1.1, condividono la stessa posizione di file di log di Hive 0.8.1.   | 
| 0.7.1 | hive\$107\$11.log   Le versioni minori di Hive 0.7.1, ad esempio Hive 0.7.1.3 e Hive 0.7.1.4, condividono la stessa posizione di file di log di Hive 0.7.1.    | 
| 0.7 | hive\$107.log | 
| 0,5 | hive\$105.log | 
| 0.4 | hive.log | 

## Funzionalità di input con suddivisione
<a name="emr-3x-hive-split-input"></a>

Per implementare la funzionalità di input con suddivisione utilizzando le versioni Hive precedenti alla versione 0.13.1 (versioni AMI di Amazon EMR antecedenti alla versione 3.11.0), utilizza quanto segue:

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

Questa funzionalità è stata deprecata a partire dalla versione di Hive 0.13.1. Per utilizzare la stessa funzionalità di input con suddivisione nella versione AMI 3.11.0 di Amazon EMR, utilizza quanto segue:

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

## Porte dei servizi Thrift
<a name="emr-3x-hive-thrift-service"></a>

 Thrift è un framework RPC che definisce un formato di serializzazione binario compatto utilizzato per conservare le strutture di dati per analisi successive. In genere, Hive configura il server per il funzionamento sulle porte seguenti. 


| Versione di Hive | Numero della 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 | 

 Per ulteriori informazioni sui servizi Thrift, consulta [http://wiki.apache.org/thrift/](http://wiki.apache.org/thrift/). 

## Utilizzo di Hive per il recupero di partizioni
<a name="emr-3x-hive-recover-partition"></a>

Amazon EMR include un'istruzione nel linguaggio di query Hive che consente di recuperare le partizioni di una tabella dai dati di tabella in Amazon S3. L'esempio seguente ne è un'illustrazione. 

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

Le directory e i dati delle partizioni devono trovarsi nella posizione specificata nella definizione di tabella e devono essere denominati in base alla convenzione Hive, ad esempio, `dt=2009-01-01`. 

**Nota**  
Dopo Hive 0.13.1, questa funzionalità è supportata in modo nativo mediante `msck repair table` e di conseguenza il supporto di `recover partitions` non è più fornito. [Per ulteriori informazioni, consulta https://cwiki.apache. org/confluence/display/Hive/LanguageManual\$1DDL](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL).

## Passaggio di una variabile Hive a uno script
<a name="emr-3x-hive-pass-variable"></a>

Per passare una variabile in un passaggio Hive utilizzando il AWS CLI, digita il seguente comando, sostituisci *myKey* con il nome della tua coppia di key pair EC2 e sostituiscilo *amzn-s3-demo-bucket* con il nome del tuo bucket. In questo esempio, `SAMPLE` è un valore di variabile preceduto dal parametro `-d`. Questa variabile è definita nello script Hive come: `${SAMPLE}`.

**Nota**  
I caratteri di continuazione della riga Linux (\$1) sono inclusi per la leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuoverli o sostituirli con un accento circonflesso (^).

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

## Configurazione della posizione di un metastore esterno
<a name="emr-3x-hive-external-metastore"></a>

La procedura seguente mostra come sovrascrivere i valori di configurazione predefiniti per la posizione del metastore Hive e avviare un cluster utilizzando la posizione del metastore riconfigurato.

**Per creare un metastore situato al di fuori del cluster EMR**

1. Crea un database MySQL o Aurora utilizzando Amazon RDS.

   Per informazioni su come creare un database Amazon RDS, consulta [Nozioni di base su Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.html).

1. **Modifica i gruppi di sicurezza per consentire le connessioni JDBC tra il database e il gruppo di sicurezza -Master. ElasticMapReduce**

   Per ulteriori informazioni su come modificare i gruppi di sicurezza per l'accesso, consulta la sezione relativa ai [Gruppi di sicurezza Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html) nella *Guida per l'utente di Amazon RDS*.

1. Impostare i valori di configurazione JDBC in `hive-site.xml`:

   1. Creare un file di configurazione `hive-site.xml` contenente quanto segue:

      ```
      <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*è l'indirizzo DNS dell'istanza Amazon RDS che esegue il database. *username*e *password* sono le credenziali del tuo database. Per ulteriori informazioni sulla connessione a istanze database MySQL e Aurora, consulta l'argomento relativo alla [Connessione a un'istanza database che esegue il motore del database di MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html) e alla [Connessione a un cluster di database Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.Connecting.html) nella *Guida per l'utente di Amazon RDS*.

      I driver JDBC sono installati da Amazon EMR. 
**Nota**  
La proprietà value non deve contenere spazi o ritorni a capo. Deve essere visualizzato tutto su una riga.

   1. Salvare il file `hive-site.xml` in un percorso su Amazon S3, ad esempio `s3://amzn-s3-demo-bucket/hive-site.xml`.

1. Crea un cluster, specificando il percorso in Amazon S3 del file `hive-site.xml` personalizzato.

   Il comando di esempio seguente illustra un AWS CLI comando che esegue questa operazione.
**Nota**  
I caratteri di continuazione della riga Linux (\$1) sono inclusi per questioni di leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuoverli o sostituirli con un accento circonflesso (^).

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

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

Per eseguire la connessione a Hive mediante JDBC devi scaricare il driver JDBC e installare un client SQL. L'esempio seguente dimostra l'utilizzo di SQL Workbench/J per connettersi a Hive tramite JDBC.

**Per scaricare i driver JDBC**

1. Scaricare ed estrarre i driver appropriati nelle versioni di Hive a cui si desidera accedere. La versione di Hive differisce a seconda dell'AMI scelta alla creazione di un cluster Amazon EMR.
   + [Driver 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)
   + Driver JDBC per 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)
   + Driver JDBC per 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. [Installare SQL Workbench/J. Per ulteriori informazioni, vedere Installazione e avvio di SQL Workbench/J nel Manuale dell'utente di SQL Manual.](http://www.sql-workbench.net/manual/install.html) Workbench/J 

1. Creare un tunnel SSH per il nodo master del cluster. La porta per la connessione è differente a seconda della versione di Hive. Gli esempi forniti nelle tabelle esposte di seguito sono relativi ai comandi `ssh` di Linux e ai comandi PuTTY di Windows.  
**Comandi SSH Linux**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/emr/latest/ReleaseGuide/emr-3x-hive.html)  
**Impostazioni del tunnel PuTTY (Windows)**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/emr/latest/ReleaseGuide/emr-3x-hive.html)

1. Aggiungere il driver JDBC a SQL Workbench.

   1. Nella finestra di dialogo **Select Connection Profile (Seleziona profilo di connessione)**, scegliere **Manage Drivers (Gestisci driver)**. 

   1. Scegliere l'icona **Create a new entry (Crea nuova voce)** (pagina bianca).

   1. Nel campo **Nome** digitare **Hive JDBC**.

   1. Per **Library (Libreria)**, fare clic sull'icona **Select the JAR file(s) (Seleziona file JAR)**.

   1. Selezionare i file JAR come illustrato nella tabella seguente.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/emr/latest/ReleaseGuide/emr-3x-hive.html)

   1. Nella finestra di dialogo **Please select one driver (Selezionare un driver)**, selezionare un driver in base alla tabella riportata di seguito e fare clic su **OK**.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/emr/latest/ReleaseGuide/emr-3x-hive.html)

1. Quando ritorni alla finestra di dialogo **Select Connection Profile (Seleziona profilo di connessione)**, verifica che il campo **Driver** sia impostato su **Hive JDBC (JDBC Hive)** e fornisci la stringa di connessione JDBC nel campo **URL** in base alla tabella seguente.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/emr/latest/ReleaseGuide/emr-3x-hive.html)

   Se il cluster utilizza AMI versione 3.3.1 o successiva, nella finestra di dialogo **Select Connection Profile (Seleziona profilo di connessione)**, digitare **hadoop** nel campo **Username (Nome utente)**.