Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Considérations et limitations pour l'utilisation de Hudi sur Amazon EMR - Amazon EMR

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.

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 limitations pour 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'interface HoodieRecordPayload à l'aide du paramètre DataSourceWriteOptions.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 (tableName_rt) de Spark SQL, 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.

  • 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'option HIVE_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ées long dans Hive, et non comme type timestamp 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 sur true.

      • 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éfinir hive.parquet.use_column_names sur true, 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" } } ]
  • HBase Index

    • La HBase version utilisée pour compiler Hudi peut être différente de celle répertoriée dans le guide de publication de l'EMR. 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"
  • Paramètres pour de meilleures performances — Pour EMR 7.3+/Hudi 0.15+, il est recommandé aux clients de définir cette configuration afin de réduire la charge de sérialisation de Kryo :

    --conf 'spark.kryo.registrator=org.apache.spark.HoodieKryoRegistrar'
    Note

    Si vous utilisez un contrôle d'accès fin (FGAC) sur EMR Serverless, cette configuration n'est pas nécessaire, car les utilisateurs doivent utiliser plutôt que. JavaSerializer KryoSerializer

ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.