Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Caractéristiques de l'application Hive pour les versions AMI antérieures d'Amazon EMR
Les fichiers journaux
Lorsque vous utilisez les versions AMI 2.x et 3.x d'Amazon EMR, les fichiers journaux Hive sont enregistrés dans /mnt/var/log/apps/
. La version de Hive que vous exécutez détermine le nom du fichier journal, comme illustré dans le tableau suivant. Cela permet de prendre en charge les versions simultanées de Hive.
Version de Hive | Nom du fichier journal |
---|---|
0.13.1 | hive.log
NoteA partir de cette version, Amazon EMR utilise un nom de fichier non versionné, |
0.11.0 | hive_0110.log
NoteLes versions mineures de Hive 0.11.0, par exemple 0.11.0.1, partagent le même emplacement du fichier journal que Hive 0.11.0. |
0.8.1 | hive_081.log
NoteLes versions mineures de Hive 0.8.1, par exemple Hive 0.8.1.1, partagent le même emplacement du fichier journal que Hive 0.8.1. |
0.7.1 | hive_07_1.log
NoteLes versions mineures de Hive 0.7.1, par exemple Hive 0.7.1.3 et Hive 0.7.1.4, partagent le même emplacement du fichier journal que Hive 0.7.1. |
0.7 | hive_07.log |
0.5 | hive_05.log |
0.4 | hive.log |
Fonctionnalité de format d'entrée avec fractionnement
Pour implémenter la fonctionnalité de format d'entrée avec fractionnement à l'aide des versions de Hive antérieures à 0.13.1 (versions AMI d'Amazon EMR antérieures à 3.11.0), utilisez les commandes suivantes :
hive> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveCombineSplitsInputFormat; hive> set mapred.min.split.size=
100000000
;
Cette fonctionnalité est devenue obsolète avec Hive 0.13.1. Pour profiter de la même fonctionnalité de format d'entrée avec fractionnement dans la version 3.11.0 AMI Amazon EMR, procédez comme suit :
set hive.hadoop.supports.splittable.combineinputformat=true;
Ports de service Thrift
Thrift est une infrastructure RPC qui définit un format de sérialisation binaire compact utilisé pour conserver les structures de données afin de les analyser ultérieurement. Généralement, Hive configure le serveur pour qu'il fonctionne sur les ports suivants.
Version de Hive | Numéro de port |
---|---|
Hive 0.13.1 | 10 000 |
Hive 0.11.0 | 10004 |
Hive 0.8.1 | 10003 |
Hive 0.7.1 | 10002 |
Hive 0.7 | 10001 |
Hive 0.5 | 10 000 |
Pour plus d'informations sur les services thrift, consultez http://wiki.apache.org/thrift/
Utilisation de Hive pour récupérer des partitions
Amazon EMR inclut une instruction du langage de requête Hive qui récupère les partitions d'une table depuis des données de table situées dans Amazon S3. L'exemple suivant en est une illustration.
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;
Les données et les répertoires de la partition doit être à l'emplacement spécifié dans la définition de table et doivent être nommées selon la convention Hive : par exemple, dt=2009-01-01
.
Note
Après Hive 0.13.1, cette fonctionnalité est prise en charge en mode natif à l'aide de msck
repair
et par conséquent la prise en charge de table
recover
partitions
n'est plus assurée. Pour plus d'informations, consultez https://cwiki.apache. org/confluence/display/Hive/LanguageManual+DDL
Transmission d'une variable Hive à un script
Pour transmettre une variable à une étape Hive à l'aide de AWS CLI, tapez la commande suivante, myKey
remplacez-la par le nom de votre paire de EC2 clés et remplacez-la par le nom amzn-s3-demo-bucket
de votre bucket. Dans cet exemple, SAMPLE
est une valeur de variable précédée par le commutateur -d
. Cette variable est définie dans le script Hive comme suit : ${SAMPLE}
.
Note
Les caractères de continuation de ligne Linux (\) sont inclus pour des raisons de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un caret (^).
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/
]
Spécification d'un emplacement de metastore externe
La procédure suivante vous montre comment remplacer les valeurs de configuration par défaut pour l'emplacement du metastore Hive et démarrer un cluster en utilisant l'emplacement du metastore reconfiguré.
Pour créer un metastore situé en dehors du cluster EMR
-
Créez une base de données MySQL ou Aurora à l'aide d'Amazon RDS.
Pour plus d'informations sur la façon de créer une base de données Amazon RDS, consultez Mise en route sur Amazon RDS.
-
Modifiez vos groupes de sécurité pour autoriser les connexions JDBC entre votre base de données et le groupe de sécurité ElasticMapReduce-Master.
Pour plus d'informations sur la façon de modifier vos groupes de sécurité pour l'accès, consultez Groupes de sécurité Amazon RDS dans le Guide de l'utilisateur Amazon RDS.
-
Définissez les valeurs de configuration JDBC dans
hive-site.xml
:-
Créez un fichier de configuration
hive-site.xml
contenant les éléments suivants :<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
est l'adresse DNS de l'instance Amazon RDS qui exécute la base de données.username
etpassword
sont les informations d'identification de votre base de données. Pour plus d'informations sur la connexion aux instances de bases de données MySQL et Aurora, consultez les sections Connexion à une instance de base de données exécutant le moteur de base de données MySQL et Connexion à un cluster de bases de données Aurora dans le Guide de l'utilisateur Amazon RDS.Les pilotes JDBC sont installés par Amazon EMR.
Note
La propriété value ne doit pas contenir d'espaces ni de retours chariot. Elle doit figurer entièrement sur une seule ligne.
-
Enregistrez votre fichier
hive-site.xml
dans un emplacement sur Amazon S3, tel ques3://
.amzn-s3-demo-bucket/
hive-site.xml
-
-
Créez un cluster, en spécifiant l'emplacement Amazon S3 du fichier
hive-site.xml
personnalisé.L'exemple de commande suivant illustre une AWS CLI commande qui effectue cette opération.
Note
Les caractères de continuation de ligne Linux (\) sont inclus pour des raisons de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un caret (^).
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"]
Connexion à Hive à l'aide de JDBC
Pour vous connecter à Hive via JDBC, vous devez télécharger le pilote JDBC et installer un client SQL. L'exemple suivant illustre l'utilisation de SQL Workbench/J pour vous connecter à Hive à l'aide de JDBC.
Pour télécharger les pilotes JDBC
-
Téléchargez et extrayez les pilotes correspondant aux versions de Hive auxquelles vous souhaitez accéder. La version de Hive varie en fonction de l'image AMI que vous choisissez lorsque vous créez un cluster Amazon EMR.
-
Pilotes JDBC Hive 0.11.0 : https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.11.0
-
Pilotes JDBC Hive 0.8.1 : https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.8.1
-
Installez SQL Workbench/J. Pour plus d'informations, consultez Installing and starting SQL Workbench/J
dans le manuel de l'utilisateur SQL Workbench/J. -
Créez un tunnel SSH vers le nœud maître du cluster. Le port de connexion diffère en fonction de la version de Hive. Les exemples fournis dans les tableaux ci-dessous concernent les utilisateurs de Linux (commandes
ssh
) et les commandes PuTTY pour les utilisateurs de WindowsCommandes SSH Linux Version de Hive Command 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
Paramètres du tunnel PuTTY (Windows) Version de Hive Paramètres de tunnel 0.13.1 Port source : 10000 Destination : : master-public-dns-name
100000.11.0 Port source : 10004 Destination : 10004 master-public-dns-name
0.8.1 Port source : 10003 Destination : 10003 master-public-dns-name
-
Ajoutez le pilote JDBC à SQL Workbench.
-
Dans la boîte de dialogue Select Connection Profile (Sélectionner le profil de connexion), sélectionnez Manage Drivers (Gérer les pilotes).
-
Sélectionnez l'icône Create a new entry (Créer une nouvelle saisie) (page blanche).
-
Dans le champ Name (Nom), saisissez
Hive JDBC
. -
Pour Library (Bibliothèque), cliquez sur l'icône Select the JAR file(s) (Sélectionner le(s) fichier(s) JAR).
-
Sélectionnez les fichiers JAR comme indiqué dans le tableau suivant.
Version du pilote Hive Fichiers JAR à ajouter 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
-
Dans la boîte de dialogue Please select one driver (Veuillez sélectionner un pilote), sélectionnez un pilote en vous conformant au tableau suivant, puis cliquez sur OK.
Version de Hive Nom de classe du pilote 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
-
-
Lorsque vous revenez à la boîte de dialogue Select Connection Profile (Sélectionner le profil de connexion), vérifiez que le champ Driver (Pilote) est défini sur Hive JDBC et fournissez la chaîne de connexion JDBC dans le champ URL, en vous conformant au tableau suivant.
Version de Hive Chaîne de connexion 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
Si votre cluster utilise la version 3.3.1 d'AMI ou une version ultérieure, dans la boîte de dialogue Select Connection Profile (Sélectionner le profil de connexion), tapez
hadoop
dans le champ Username (Nom d'utilisateur).