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'interfacciaHoodieRecordPayload
utilizzando il parametroDataSourceWriteOptions.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 (
) 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.tableName
_rt -
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'opzioneHIVE_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 datilong
in Hive e non come tipotimestamp
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
sutrue
.-
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 impostarehive.parquet.use_column_names
sutrue
, 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