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.
Considérations et limites relatives à l'utilisation de Hudi sur Amazon EMR
-
Le champ de clé d'enregistrement ne peut pas être nul ou vide – Le champ que vous spécifiez comme champ de clé d'enregistrement ne peut pas avoir des valeurs
null
ou vides. -
Schéma mis à jour par défaut lors de l'insertion et de l'insertion — Hudi fournit une interface
HoodieRecordPayload
qui détermine comment le jeu de données Hudi en entrée DataFrame et le jeu de données Hudi existant sont fusionnés pour produire un nouveau jeu de données mis à jour. Hudi fournit une implémentation par défaut de cette classeOverwriteWithLatestAvroPayload
, qui remplace les enregistrements existants et met à jour le schéma tel que spécifié dans l'entrée. DataFrame Pour personnaliser cette logique en vue d'une implémentation de la fusion et des mises à jour partielles, vous pouvez fournir une implémentation de l'interfaceHoodieRecordPayload
à l'aide du paramètreDataSourceWriteOptions.PAYLOAD_CLASS_OPT_KEY
. -
La suppression exige un schéma – Lors d'une suppression, vous devez spécifier les champs de clé d'enregistrement, de clé de partition et de clé de pré-combinaison. Les autres colonnes peuvent être
null
ou vides, mais le schéma complet est requis. -
Limites des tables MoR – Les tables MoR ne prennent pas en charge le pointage de sauvegarde. Vous pouvez interroger les tables MoR à l'aide de la vue optimisée pour la lecture ou de la vue en temps réel (
) de SparkSQL, Presto ou Hive. L'utilisation de la vue optimisée pour la lecture expose uniquement les données du fichier de base et n'expose pas une vue fusionnée des données de base et des données de journal.tableName
_rt -
Hive
-
Pour l'enregistrement des tables dans le metastore Hive, Hudi s'attend à ce que le serveur Hive Thrift s'exécute sur le port par défaut
10000
. Si vous remplacez ce port par un port personnalisé, transmettez l'optionHIVE_URL_OPT_KEY
comme indiqué dans l'exemple suivant..option(DataSourceWriteOptions.HIVE_URL_OPT_KEY, "jdbc:hive2://localhost:
override-port-number
-
Le type de données
timestamp
dans Spark est enregistré comme type de donnéeslong
dans Hive, et non comme typetimestamp
de Hive.
-
-
Presto
-
Presto ne prend pas en charge la lecture des tables MoR en temps réel dans les versions de Hudi inférieures à 0.6.0.
-
Presto ne prend en charge que les requêtes instantanées.
-
Pour que Presto interprète correctement les colonnes d'un ensemble de données, Hudi définissez la valeur de
hive.parquet_use_column_names
surtrue
.-
Pour définir la valeur pour une session, dans le shell Presto, exécutez la commande suivante :
set session hive.parquet_use_column_names=true
-
Pour définir la valeur au niveau du cluster, utilisez la classification de configuration
presto-connector-hive
pour définirhive.parquet.use_column_names
surtrue
, comme illustré dans l'exemple suivant. Pour de plus amples informations, veuillez consulter Configuration des applications.[ { "Classification": "presto-connector-hive", "Properties": { "hive.parquet.use-column-names": "true" } } ]
-
-
-
HBaseIndice
-
La HBase version utilisée pour compiler Hudi peut être différente de celle répertoriée dans le guide de EMR publication. Pour extraire les dépendances correctes pour votre session Spark, exécutez la commande suivante.
spark-shell \ --jars /usr/lib/spark/external/lib/spark-avro.jar,/usr/lib/hudi/cli/lib/*.jar \ --conf "spark.serializer=org.apache.spark.serializer.KryoSerializer" \ --conf "spark.sql.hive.convertMetastoreParquet=false"
-