Considerazioni e limitazioni per l'utilizzo di Hudi su Amazon EMR - Amazon EMR

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à.

Considerazioni e limitazioni per l'utilizzo di Hudi su Amazon EMR

  • Il campo della chiave di registro non può essere null o vuoto: il campo specificato come chiave di registro non può avere valori null o vuoti.

  • Schema aggiornato per impostazione predefinita su upsert e insert: Hudi fornisce un'interfaccia HoodieRecordPayload che determina in che modo l'input DataFrame e il set di dati Hudi esistente vengono uniti per produrre un nuovo set di dati aggiornato. Hudi fornisce un'implementazione predefinita di questa classeOverwriteWithLatestAvroPayload, che sovrascrive i record esistenti e aggiorna lo schema come specificato nell'input. DataFrame Per personalizzare questa logica per l'implementazione di aggiornamenti di unione e parziali, è possibile fornire un'implementazione dell'interfaccia HoodieRecordPayload utilizzando il parametro DataSourceWriteOptions.PAYLOAD_CLASS_OPT_KEY.

  • L'eliminazione richiede lo schema: durante l'eliminazione, è necessario specificare la chiave di registro, la chiave di partizione e i campi chiave pre-combinati. Altre colonne possono essere rese null o vuote, ma è necessario lo schema completo.

  • Limitazioni delle tabelle MoR: le tabelle MoR non supportano il savepointing. È possibile interrogare le tabelle MoR utilizzando la vista ottimizzata per la lettura o la vista in tempo reale (tableName_rt) da Spark SQL, Presto o Hive. L'utilizzo della visualizzazione ottimizzata per la lettura espone solo i dati del file di base e non espone una vista unita dei dati di base e di log.

  • Hive

    • Per la registrazione delle tabelle nel metastore Hive, Hudi si aspetta che il server Hive Thrift sia in esecuzione sulla porta predefinita 10000. Se si esegue l'override di questa porta con una porta personalizzata, passa l'opzione HIVE_URL_OPT_KEY come illustrato nell'esempio seguente.

      .option(DataSourceWriteOptions.HIVE_URL_OPT_KEY, "jdbc:hive2://localhost:override-port-number
    • Il tipo di dati timestamp in Spark è registrato come tipo di dati long in Hive e non come tipo timestamp di Hive.

  • Presto

    • Presto non supporta la lettura di tabelle MoR in tempo reale nelle versioni Hudi precedenti alla 0.6.0.

    • Presto supporta solo le query degli snapshot.

    • Affinché Presto interpreti correttamente le colonne Hudi del set di dati, imposta il valore hive.parquet_use_column_names su true.

      • Per impostare il valore di una sessione, nella shell Presto, eseguire il comando seguente:

        set session hive.parquet_use_column_names=true
      • Per impostare il valore a livello di cluster, utilizzare la classificazione di configurazione presto-connector-hive per impostare hive.parquet.use_column_names su true, come illustrato nell'esempio seguente. Per ulteriori informazioni, consulta Configurazione delle applicazioni.

        [ { "Classification": "presto-connector-hive", "Properties": { "hive.parquet.use-column-names": "true" } } ]
  • HBase Indice

    • La HBase versione usata per creare Hudi potrebbe essere diversa da quella elencata nella EMR Release Guide. Per inserire le dipendenze corrette per la sessione Spark, esegui il comando seguente.

      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"
  • Impostazioni per prestazioni ottimali: per EMR 7.3+/Hudi 0.15+, si consiglia ai clienti di impostare questa configurazione per ridurre il sovraccarico di serializzazione Kryo:

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

    Se si utilizza il controllo di accesso granulare (FGAC) su EMR Serverless, questa configurazione non è necessaria, poiché gli utenti devono utilizzare anziché. JavaSerializer KryoSerializer