Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Überlegungen und Einschränkungen für die Verwendung von Hudi bei Amazon EMR
-
Datensatzschlüsselfeld darf nicht null oder leer sein – Das Feld, das Sie als Datensatzschlüsselfeld angeben, darf weder
null
-Werte noch leere Werte aufweisen. -
Das Schema wird standardmäßig beim Upsert und Insert aktualisiert — Hudi bietet eine Schnittstelle,
HoodieRecordPayload
die festlegt, wie die Eingabe DataFrame und der vorhandene Hudi-Datensatz zusammengeführt werden, um einen neuen, aktualisierten Datensatz zu erzeugen. Hudi bietet eine Standardimplementierung dieser KlasseOverwriteWithLatestAvroPayload
, die bestehende Datensätze überschreibt und das in der Eingabe angegebene Schema aktualisiert. DataFrame Um diese Logik für die Implementierung von Merge- und Teilaktualisierungen anzupassen, können Sie mithilfe des ParametersDataSourceWriteOptions.PAYLOAD_CLASS_OPT_KEY
eine Implementierung derHoodieRecordPayload
-Schnittstelle bereitstellen. -
Löschen erfordert Schema – Beim Löschen müssen Sie den Datensatzschlüssel, den Partitionsschlüssel und die Schlüsselfelder für die Vorab-Kombination angeben. Andere Spalten können auf
null
gesetzt werden oder leer sein, aber das vollständige Schema ist erforderlich. -
Einschränkungen bei MoR-Tabellen – MoR-Tabellen unterstützen kein Savepointing. Sie können MoR-Tabellen mit der leseoptimierten Ansicht oder der Echtzeitansicht (
) von SparkSQL, Presto oder Hive abfragen. Wenn Sie die leseoptimierte Ansicht verwenden, werden nur Basisdateidaten und keine zusammengeführte Ansicht von Basis- und Protokolldaten angezeigt.tableName
_rt -
Hive
-
Für die Registrierung von Tabellen im Hive-Metastore erwartet , dass der Hive Thrift-Server am Standardport
10000
ausgeführt wird. Wenn Sie diesen Port mit einem benutzerdefinierten Port überschreiben, übergeben Sie die OptionHIVE_URL_OPT_KEY
wie im folgenden Beispiel gezeigt..option(DataSourceWriteOptions.HIVE_URL_OPT_KEY, "jdbc:hive2://localhost:
override-port-number
-
Der Datentyp
timestamp
in Spark ist in Hive alslong
-Datentyp und nicht als Hive-Typtimestamp
registriert.
-
-
Presto
-
Presto unterstützt nicht das Lesen von MoR-Echtzeittabellen.Funktionen in Hudi-Versionen unter 0.6.0.
-
Presto unterstützt nur Snapshot-Abfragen.
-
Damit Presto Hudi-Datensatz-Spalten korrekt interpretiert, stellen Sie den
hive.parquet_use_column_names
-Wert auftrue
ein.-
Um den Wert für eine Sitzung festzulegen, führen Sie in der Presto-Shell den folgenden Befehl aus:
set session hive.parquet_use_column_names=true
-
Um den Wert auf Clusterebene festzulegen, verwenden Sie die Konfigurationsklassifizierung
presto-connector-hive
, umhive.parquet.use_column_names
auftrue
einzustellen, wie im folgenden Beispiel veranschaulicht. Weitere Informationen finden Sie unter Anwendungen konfigurieren.[ { "Classification": "presto-connector-hive", "Properties": { "hive.parquet.use-column-names": "true" } } ]
-
-
-
HBaseIndex
-
Die HBase Version, die zur Erstellung von Hudi verwendet wurde, unterscheidet sich möglicherweise von der Version, die im EMR Release Guide aufgeführt ist. Um die richtigen Abhängigkeiten für Ihre Spark-Sitzung abzurufen, führen Sie den folgenden Befehl aus.
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"
-