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
File di log
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
NotaA partire da questa versione, Amazon EMR utilizza un nome di file senza versione, ossia |
0.11.0 | hive_0110.log
NotaLe 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_081.log
NotaLe 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_07_1.log
NotaLe 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_07.log |
0,5 | hive_05.log |
0.4 | hive.log |
Funzionalità di input con suddivisione
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
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/
Utilizzo di Hive per il recupero di partizioni
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
e di conseguenza il supporto di table
recover
partitions
non è più fornito. Per ulteriori informazioni, consulta https://cwiki.apache. org/confluence/display/Hive/LanguageManual+DDL
Passaggio di una variabile Hive a uno script
Per passare una variabile in un passaggio Hive usando il AWS CLI, digita il seguente comando, sostituisci myKey
con il nome della tua EC2 key pair e sostituisci 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 (\) 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-version3.9
\ --applications Name=Hue
Name=Hive
Name=Pig
\ --use-default-roles --ec2-attributes KeyName=myKey
\ --instance-typem3.xlarge
--instance-count3
\ --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
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
-
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.
-
Modifica i tuoi gruppi di sicurezza per consentire le connessioni JDBC tra il tuo database e il ElasticMapReduce gruppo di sicurezza -Master.
Per ulteriori informazioni su come modificare i gruppi di sicurezza per l'accesso, consulta la sezione relativa ai Gruppi di sicurezza Amazon RDS nella Guida per l'utente di Amazon RDS.
-
Impostare i valori di configurazione JDBC in
hive-site.xml
:-
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
epassword
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 e alla Connessione a un cluster di database Aurora 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.
-
Salvare il file
hive-site.xml
in un percorso su Amazon S3, ad esempios3://
.amzn-s3-demo-bucket/
hive-site.xml
-
-
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 (\) 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-version3.10
\ --applications Name=Hue
Name=Hive
Name=Pig
\ --use-default-roles --ec2-attributes KeyName=myKey
\ --instance-typem3.xlarge
--instance-count3
\ --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
Per eseguire la connessione a Hive mediante JDBC devi scaricare il driver JDBC e installare un client SQL. L'esempio seguente illustra l'utilizzo di SQL Workbench/J per la connessione a Hive mediante JDBC.
Per scaricare i driver JDBC
-
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 per Hive 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
-
Installare SQL Workbench/J. Per ulteriori informazioni, consulta la pagina relativa all'installazione e all'avvio di SQL Workbench/J
nella guida per l'utente di SQL Workbench/J. -
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 Versione di Hive Comando 0.13.1 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10000:localhost:10000 hadoop@master-public-dns-name
0.11.0 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10004:localhost:10004 hadoop@master-public-dns-name
0.8.1 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10003:localhost:10003 hadoop@master-public-dns-name
0.7.1 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10002:localhost:10002 hadoop@master-public-dns-name
0.7 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10001:localhost:10001 hadoop@master-public-dns-name
0,5 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10000:localhost:10000 hadoop@master-public-dns-name
Impostazioni del tunnel PuTTY (Windows) Versione di Hive Impostazione tunnel 0.13.1 Porta di origine: 10000 Destinazione :10000 master-public-dns-name
0.11.0 Porta di origine: 10004 Destinazione :10004 master-public-dns-name
0.8.1 Porta di origine: 10003 Destinazione :10003 master-public-dns-name
-
Aggiungere il driver JDBC a SQL Workbench.
-
Nella finestra di dialogo Select Connection Profile (Seleziona profilo di connessione), scegliere Manage Drivers (Gestisci driver).
-
Scegliere l'icona Create a new entry (Crea nuova voce) (pagina bianca).
-
Nel campo Nome digitare
Hive JDBC
. -
Per Library (Libreria), fare clic sull'icona Select the JAR file(s) (Seleziona file JAR).
-
Selezionare i file JAR come illustrato nella tabella seguente.
Versione driver Hive File JAR da aggiungere 0.13.1 hive_metastore.jar hive_service.jar HiveJDBC3.jar libfb303-0.9.0.jar libthrift-0.9.0.jar log4j-1.2.14.jar ql.jar slf4j-api-1.5.8.jar slf4j-log4j12-1.5.8.jar TCLIServiceClient.jar
0.11.0 hadoop-core-1.0.3.jar hive-exec-0.11.0.jar hive-jdbc-0.11.0.jar hive-metastore-0.11.0.jar hive-service-0.11.0.jar libfb303-0.9.0.jar commons-logging-1.0.4.jar slf4j-api-1.6.1.jar
0.8.1 hadoop-core-0.20.205.jar hive-exec-0.8.1.jar hive-jdbc-0.8.1.jar hive-metastore-0.8.1.jar hive-service-0.8.1.jar libfb303-0.7.0.jar libthrift-0.7.0.jar log4j-1.2.15.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
0.7.1 hadoop-0.20-core.jar hive-exec-0.7.1.jar hive-jdbc-0.7.1.jar hive-metastore-0.7.1.jar hive-service-0.7.1.jar libfb303.jar commons-logging-1.0.4.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
0.7 hadoop-0.20-core.jar hive-exec-0.7.0.jar hive-jdbc-0.7.0.jar hive-metastore-0.7.0.jar hive-service-0.7.0.jar libfb303.jar commons-logging-1.0.4.jar slf4j-api-1.5.6.jar slf4j-log4j12-1.5.6.jar
0,5 hadoop-0.20-core.jar hive-exec-0.5.0.jar hive-jdbc-0.5.0.jar hive-metastore-0.5.0.jar hive-service-0.5.0.jar libfb303.jar log4j-1.2.15.jar commons-logging-1.0.4.jar
-
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.
Versione di Hive Nome di classe del driver 0.13.1 com.amazon.hive.jdbc3.HS2Driver
0.11.0 org.apache.hadoop.hive.jdbc.HiveDriver.jar
0.8.1 org.apache.hadoop.hive.jdbc.HiveDriver.jar
0.7.1 org.apache.hadoop.hive.jdbc.HiveDriver.jar
0.7 org.apache.hadoop.hive.jdbc.HiveDriver.jar
0,5 org.apache.hadoop.hive.jdbc.HiveDriver.jar
-
-
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.
Versione di Hive Stringa di connessione JDBC 0.13.1 jdbc:hive2://localhost:10000/default
0.11.0 jdbc:hive://localhost:10004/default
0.8.1 jdbc:hive://localhost:10003/default
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).