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.
Jobs bei Hive
Sie können Hive-Jobs in einer Anwendung ausführen, deren type
Parameter auf gesetzt ist. HIVE
Jobs müssen mit der Hive-Version kompatibel sein, die mit der EMR Amazon-Release-Version kompatibel ist. Wenn Sie beispielsweise Jobs in einer Anwendung mit EMR Amazon-Version 6.6.0 ausführen, muss Ihr Job mit Apache Hive 3.1.2 kompatibel sein. Informationen zu den Anwendungsversionen der einzelnen Versionen finden Sie unter. Release-Versionen von Amazon EMR Serverless
Hive-Auftragsparameter
Wenn Sie den verwenden StartJobRun
API, um einen Hive-Job auszuführen, müssen Sie die folgenden Parameter angeben.
Erforderliche Parameter
Runtime-Rolle für Hive-Jobs
Geben executionRoleArn
Sie hier die ARN für die IAM Rolle an, die Ihre Anwendung zur Ausführung von Hive-Jobs verwendet. Diese Rolle muss die folgenden Berechtigungen enthalten:
-
Lesen Sie aus S3-Buckets oder anderen Datenquellen, in denen sich Ihre Daten befinden
-
Lesen Sie aus S3-Buckets oder -Präfixen, in denen sich Ihre Hive-Abfragedatei und Ihre Init-Abfragedatei befinden
-
Lesen und Schreiben in S3-Buckets, in denen sich Ihr Hive Scratch-Verzeichnis und Ihr Hive Metastore-Warehouse-Verzeichnis befinden
-
Schreiben Sie in S3-Buckets, in die Sie Ihre endgültige Ausgabe schreiben möchten
-
Schreiben Sie Protokolle in einen S3-Bucket oder ein Präfix, das Folgendes angibt
S3MonitoringConfiguration
-
Zugriff auf KMS Schlüssel, wenn Sie KMS Schlüssel zum Verschlüsseln von Daten in Ihrem S3-Bucket verwenden
-
Zugriff auf den AWS Glue-Datenkatalog
Wenn Ihr Hive-Job Daten in oder aus anderen Datenquellen liest oder schreibt, geben Sie die entsprechenden Berechtigungen in dieser IAM Rolle an. Wenn Sie diese Berechtigungen nicht für die IAM Rolle bereitstellen, schlägt Ihr Job möglicherweise fehl. Weitere Informationen finden Sie unter Job-Runtime-Rollen für Amazon EMR Serverless.
Hive-Job-Treiberparameter
Wird verwendet jobDriver
, um Eingaben für den Job bereitzustellen. Der Job-Treiber-Parameter akzeptiert nur einen Wert für den Auftragstyp, den Sie ausführen möchten. Wenn Sie den Auftragstyp angebenhive
, übergibt EMR Serverless eine Hive-Abfrage an den jobDriver
Parameter. Hive-Jobs haben die folgenden Parameter:
-
query
— Dies ist der Verweis in Amazon S3 auf die Hive-Abfragedatei, die Sie ausführen möchten. -
parameters
— Dies sind die zusätzlichen Hive-Konfigurationseigenschaften, die Sie überschreiben möchten. Um Eigenschaften zu überschreiben, übergeben Sie sie an diesen Parameter als--hiveconf
. Um Variablen zu überschreiben, übergeben Sie sie an diesen Parameter alsproperty=value
--hivevar
.key=value
-
initQueryFile
— Dies ist die Init-Hive-Abfragedatei. Hive führt diese Datei vor Ihrer Abfrage aus und kann sie verwenden, um Tabellen zu initialisieren.
Parameter zum Überschreiben der Hive-Konfiguration
Wird verwendet configurationOverrides
, um Konfigurationseigenschaften auf Überwachungs- und Anwendungsebene zu überschreiben. Dieser Parameter akzeptiert ein JSON Objekt mit den folgenden zwei Feldern:
-
monitoringConfiguration
— Verwenden Sie dieses Feld, um Amazon S3 URL (s3MonitoringConfiguration
) anzugeben, in dem der EMR Serverless-Job die Protokolle Ihres Hive-Jobs speichern soll. Stellen Sie sicher, dass Sie diesen Bucket mit demselben Bucket erstellen AWS-Konto , der Ihre Anwendung hostet, und mit demselben Bucket, in AWS-Region dem Ihr Job ausgeführt wird. -
applicationConfiguration
— Sie können in diesem Feld ein Konfigurationsobjekt angeben, um die Standardkonfigurationen für Anwendungen zu überschreiben. Sie können eine Kurzsyntax verwenden, um die Konfiguration bereitzustellen, oder Sie können das Konfigurationsobjekt in einer JSON Datei referenzieren. Konfigurationsobjekte bestehen aus einer Klassifizierung, Eigenschaften und optionalen verschachtelten Konfigurationen. Eigenschaften bestehen aus den Einstellungen, die Sie in dieser Datei überschreiben möchten. Sie können mehrere Klassifizierungen für mehrere Anwendungen in einem einzigen Objekt angeben. JSONAnmerkung
Die verfügbaren Konfigurationsklassifizierungen variieren je nach EMR Serverless-Version. Zum Beispiel Klassifizierungen für benutzerdefiniertes Log4j
spark-driver-log4j2
undspark-executor-log4j2
sind nur mit Versionen 6.8.0 und höher verfügbar.
Wenn Sie dieselbe Konfiguration in einer Anwendungsüberschreibung und in Hive-Parametern übergeben, haben die Hive-Parameter Priorität. In der folgenden Liste werden die Konfigurationen von der höchsten Priorität zur niedrigsten Priorität geordnet.
-
Konfiguration, die Sie als Teil der Hive-Parameter mit
--hiveconf
angeben.property=value
-
Die Konfiguration, die Sie als Teil Ihrer Anwendung angeben, hat Vorrang, wenn Sie einen Job starten.
-
Konfiguration, die Sie bei der Erstellung einer Anwendung
runtimeConfiguration
als Teil Ihrer angeben. -
Optimierte Konfigurationen, die Amazon für die Version EMR zuweist.
-
Standard-Open-Source-Konfigurationen für die Anwendung.
Weitere Informationen zum Deklarieren von Konfigurationen auf Anwendungsebene und zum Überschreiben von Konfigurationen während der Auftragsausführung finden Sie unter. Standardanwendungskonfiguration für Serverless EMR
Eigenschaften von Hive-Jobs
In der folgenden Tabelle sind die obligatorischen Eigenschaften aufgeführt, die Sie konfigurieren müssen, wenn Sie einen Hive-Job einreichen.
Einstellung | Beschreibung |
---|---|
hive.exec.scratchdir |
Der Amazon S3 S3-Speicherort, an dem EMR Serverless während der Hive-Auftragsausführung temporäre Dateien erstellt. |
hive.metastore.warehouse.dir |
Der Amazon S3 S3-Speicherort von Datenbanken für verwaltete Tabellen in Hive. |
In der folgenden Tabelle sind die optionalen Hive-Eigenschaften und ihre Standardwerte aufgeführt, die Sie überschreiben können, wenn Sie einen Hive-Job einreichen.
Einstellung | Beschreibung | Standardwert |
---|---|---|
fs.s3.customAWSCredentialsProvider |
Der Anbieter AWS für Anmeldeinformationen, den Sie verwenden möchten. | com.amazonaws.auth.D efaultAWSCredentials ProviderChain |
fs.s3a.aws.credentials.provider |
Der Anbieter AWS für Anmeldeinformationen, den Sie mit einem S3A-Dateisystem verwenden möchten. | com.amazonaws.auth.D efaultAWSCredentials ProviderChain |
hive.auto.convert.join |
Option, die die automatische Konvertierung von allgemeinen Joins in Mapjoin aktiviert, basierend auf der Größe der Eingabedatei. | TRUE |
hive.auto.convert.join.noconditionaltask |
Option, die die Optimierung aktiviert, wenn Hive einen gemeinsamen Join basierend auf der Größe der Eingabedatei in einen Mapjoin konvertiert. | TRUE |
hive.auto.convert.join.noconditionaltask.size |
Ein Join wird direkt in einen Mapjoin unter dieser Größe konvertiert. | Der optimale Wert wird auf der Grundlage des Tez-Taskspeichers berechnet |
hive.cbo.enable |
Option, die kostenbasierte Optimierungen mit dem Calcite-Framework aktiviert. | TRUE |
hive.cli.tez.session.async |
Option zum Starten einer Tez-Hintergrundsitzung, während Ihre Hive-Abfrage kompiliert wird. Wenn diese Option auf gesetzt istfalse , wird Tez AM gestartet, nachdem Ihre Hive-Abfrage kompiliert wurde. |
TRUE |
hive.compute.query.using.stats |
Option, die Hive aktiviert, um bestimmte Abfragen mit im Metastore gespeicherten Statistiken zu beantworten. Stellen hive.stats.autogather Sie für grundlegende Statistiken auf ein. TRUE Für eine umfassendere Sammlung von Abfragen führen Sie den Befehl ausanalyze
table queries . |
TRUE |
hive.default.fileformat |
Das Standarddateiformat für CREATE TABLE Anweisungen. Sie können dies explizit überschreiben, wenn Sie es STORED AS [FORMAT] in Ihrem CREATE TABLE Befehl angeben. |
TEXTFILE |
hive.driver.cores |
Die Anzahl der Kerne, die für den Hive-Treiberprozess verwendet werden sollen. | 2 |
hive.driver.disk |
Die Festplattengröße für den Hive-Treiber. | 20G |
hive.driver.disk.type |
Der Festplattentyp für den Hive-Treiber. | Standard |
hive.tez.disk.type |
Die Festplattengröße für die Tez-Arbeiter. | Standard |
hive.driver.memory |
Die Menge an Arbeitsspeicher, die pro Hive-Treiberprozess verwendet werden soll. Der Hive CLI und der Tez Application Master teilen sich diesen Speicher zu gleichen Teilen mit 20% der verfügbaren Kapazität. | 6 G |
hive.emr-serverless.launch.env.[ |
Option zum Festlegen der Umgebungsvariablen in allen Hive-spezifischen Prozessen, z. B. Ihrem Hive-Treiber, Tez AM und der Tez-Aufgabe. |
|
hive.exec.dynamic.partition |
Optionen, die dynamische Partitionen in/aktivieren. DML DDL | TRUE |
hive.exec.dynamic.partition.mode |
Option, die angibt, ob Sie den strikten Modus oder den nicht strikten Modus verwenden möchten. Im strikten Modus müssen Sie mindestens eine statische Partition angeben, falls Sie versehentlich alle Partitionen überschreiben. Im nicht-strikten Modus dürfen alle Partitionen dynamisch sein. | strict |
hive.exec.max.dynamic.partitions |
Die maximale Anzahl dynamischer Partitionen, die Hive insgesamt erstellt. | 1000 |
hive.exec.max.dynamic.partitions.pernode |
Maximale Anzahl dynamischer Partitionen, die Hive in jedem Mapper- und Reducer-Knoten erstellt. | 100 |
hive.exec.orc.split.strategy |
Erwartet einen der folgenden Werte:BI ,, ETL oder. HYBRID Dies ist keine Konfiguration auf Benutzerebene. BI gibt an, dass Sie weniger Zeit mit der Split-Generierung als mit der Ausführung von Abfragen verbringen möchten. ETL gibt an, dass Sie mehr Zeit mit der Split-Generierung verbringen möchten. HYBRID spezifiziert eine Auswahl der oben genannten Strategien, die auf Heuristiken basieren. |
HYBRID |
hive.exec.reducers.bytes.per.reducer |
Die Größe pro Reduzierstück. Die Standardeinstellung ist 256 MB. Wenn die Eingabegröße 1 G ist, verwendet der Job 4 Reduzierungen. | 256000000 |
hive.exec.reducers.max |
Die maximale Anzahl von Reduzierstücken. | 256 |
hive.exec.stagingdir |
Der Name des Verzeichnisses, in dem temporäre Dateien gespeichert werden, die Hive innerhalb von Tabellenpositionen und in dem in der Eigenschaft angegebenen Speicherort des Scratch-Verzeichnisses erstellt. hive.exec.scratchdir |
.hive-staging |
hive.fetch.task.conversion |
Erwartet einen der folgenden Werte:NONE ,MINIMAL , oderMORE . Hive kann ausgewählte Abfragen in eine einzelne FETCH Aufgabe konvertieren. Dadurch wird die Latenz minimiert. |
MORE |
hive.groupby.position.alias |
Option, die Hive veranlasst, in GROUP BY Anweisungen einen Alias für die Spaltenposition zu verwenden. |
FALSE |
hive.input.format |
Das Standardeingabeformat. Stellen Sie es auf ein, HiveInputFormat wenn Sie Probleme mit habenCombineHiveInputFormat . |
org.apache.hadoop.hive.ql.io.CombineHiveInputFormat |
hive.log.explain.output |
Option, die Erläuterungen zur erweiterten Ausgabe für alle Abfragen in Ihrem Hive-Protokoll aktiviert. | FALSE |
hive.log.level |
Die Hive-Protokollierungsebene. | INFO |
hive.mapred.reduce.tasks.speculative.execution |
Option, die die spekulative Markteinführung von Reducern aktiviert. Wird nur mit Amazon EMR 6.10.x und niedriger unterstützt. | TRUE |
hive.max-task-containers |
Die maximale Anzahl gleichzeitiger Container. Der konfigurierte Mapper-Speicher wird mit diesem Wert multipliziert, um den verfügbaren Speicher zu ermitteln, der von der Aufteilung der Berechnungen und der Abmeldung von Aufgaben genutzt wird. | 1000 |
hive.merge.mapfiles |
Option, die bewirkt, dass kleine Dateien am Ende eines Auftrags, der nur für die Zuordnung vorgesehen ist, zusammengeführt werden. | TRUE |
hive.merge.size.per.task |
Die Größe der zusammengeführten Dateien am Ende des Jobs. | 256000000 |
hive.merge.tezfiles |
Option, die das Zusammenführen kleiner Dateien am Ende eines Tez aktiviert. DAG | FALSE |
hive.metastore.client.factory.class |
Der Name der Factory-Klasse, die Objekte erzeugt, die die IMetaStoreClient Schnittstelle implementieren. |
com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory |
hive.metastore.glue.catalogid |
Wenn der AWS Glue-Datenkatalog als Metastore fungiert, aber in einem anderen AWS-Konto als den Jobs ausgeführt wird, die ID des Ortes, AWS-Konto an dem die Jobs ausgeführt werden. | NULL |
hive.metastore.uris |
Die SparsamkeitURI, mit der der Metastore-Client eine Verbindung zum Remote-Metastore herstellt. | NULL |
hive.optimize.ppd |
Option, die den Prädikats-Pushdown aktiviert. | TRUE |
hive.optimize.ppd.storage |
Option, die die Übertragung von Prädikaten an Speicherhandler aktiviert. | TRUE |
hive.orderby.position.alias |
Option, die Hive veranlasst, in Anweisungen einen Alias für die Spaltenposition zu verwenden. ORDER BY |
TRUE |
hive.prewarm.enabled |
Option, die das Container-Prewarm für Tez aktiviert. | FALSE |
hive.prewarm.numcontainers |
Die Anzahl der Behälter, die für Tez vorgewärmt werden sollen. | 10 |
hive.stats.autogather |
Option, die Hive veranlasst, während des Befehls automatisch grundlegende Statistiken zu sammeln. INSERT OVERWRITE |
TRUE |
hive.stats.fetch.column.stats |
Option, die das Abrufen von Spaltenstatistiken aus dem Metastore deaktiviert. Das Abrufen von Spaltenstatistiken kann teuer sein, wenn die Anzahl der Spalten hoch ist. | FALSE |
hive.stats.gather.num.threads |
Die Anzahl der Threads, die die Befehle partialscan und noscan analyze für partitionierte Tabellen verwenden. Dies gilt nur für Dateiformate, die StatsProvidingRecordReader (likeORC) implementieren. |
10 |
hive.strict.checks.cartesian.product |
Optionen, die strenge kartesische Join-Prüfungen aktivieren. Bei diesen Prüfungen ist ein kartesisches Produkt (ein Cross-Join) nicht zulässig. | FALSE |
hive.strict.checks.type.safety |
Option, mit der strenge Typsicherheitsprüfungen aktiviert und der Vergleich von sowohl bigint mit als auch deaktiviert wird. string double |
TRUE |
hive.support.quoted.identifiers |
Erwartet einen Wert von NONE oderCOLUMN . NONE impliziert, dass nur alphanumerische Zeichen und Unterstriche in Bezeichnern gültig sind. COLUMN impliziert, dass Spaltennamen jedes beliebige Zeichen enthalten können. |
COLUMN |
hive.tez.auto.reducer.parallelism |
Option, die die automatische Reducer-Parallelitätsfunktion von Tez aktiviert. Hive schätzt weiterhin Datengrößen und legt Parallelitätsschätzungen fest. Tez nimmt Stichproben der Ausgabegrößen der Quellscheitelpunkte und passt die Schätzungen zur Laufzeit nach Bedarf an. | TRUE |
hive.tez.container.size |
Die Menge an Speicher, die pro Tez-Task-Prozess verwendet werden soll. | 6144 |
hive.tez.cpu.vcores |
Die Anzahl der Kerne, die für jede Tez-Aufgabe verwendet werden sollen. | 2 |
hive.tez.disk.size |
Die Festplattengröße für jeden Task-Container. | 20G |
hive.tez.input.format |
Das Eingabeformat für die Split-Generierung im Tez AM. | org.apache.hadoop.hive.ql.io.HiveInputFormat |
hive.tez.min.partition.factor |
Untere Grenze der Reduzierungen, die Tez festlegt, wenn Sie die automatische Reduzierung der Parallelität aktivieren. | 0,25 |
hive.vectorized.execution.enabled |
Option, die den vektorisierten Modus der Abfrageausführung aktiviert. | TRUE |
hive.vectorized.execution.reduce.enabled |
Option, die den vektorisierten Modus der Reduktionsseite einer Abfrageausführung aktiviert. | TRUE |
javax.jdo.option.ConnectionDriverName |
Der Name der Treiberklasse für einen Metastore. JDBC | org.apache.derby.jdbc.EmbeddedDriver |
javax.jdo.option.ConnectionPassword |
Das mit einer Metastore-Datenbank verknüpfte Passwort. | NULL |
javax.jdo.option.ConnectionURL |
Die JDBC Verbindungszeichenfolge für einen JDBC Metastore. | jdbc:derby:;databaseName=metastore_db;create=true |
javax.jdo.option.ConnectionUserName |
Der mit einer Metastore-Datenbank verknüpfte Benutzername. | NULL |
mapreduce.input.fileinputformat.split.maxsize |
Die maximale Größe eines Splits während der Split-Berechnung, wenn Ihr Eingabeformat ist. org.apache.hadoop.hive.ql.io.CombineHiveInputFormat Bei Angabe von 0 gibt es keinen Höchstwert. |
0 |
tez.am.dag.cleanup.on.completion |
Option, mit der die Bereinigung von Shuffle-Daten aktiviert wird, wenn der Vorgang abgeschlossen ist. DAG | TRUE |
tez.am.emr-serverless.launch.env.[ |
Option zum Festlegen der Umgebungsvariablen im Tez AM-Prozess. Für Tez AM überschreibt dieser Wert den Wert. hive.emr-serverless.launch.env.[ |
|
tez.am.log.level |
Die Root-Protokollierungsebene, die EMR Serverless an den Tez-App-Master weitergibt. | INFO |
tez.am.sleep.time.before.exit.millis |
EMRServerless sollte ATS Ereignisse nach diesem Zeitraum nach der Anfrage zum Herunterfahren am übertragen. | 0 |
tez.am.speculation.enabled |
Option, die zum spekulativen Start langsamerer Aufgaben führt. Dies kann dazu beitragen, die Auftragslatenz zu verringern, wenn einige Aufgaben aufgrund fehlerhafter oder langsamer Computer langsamer ausgeführt werden. Wird nur mit Amazon EMR 6.10.x und niedriger unterstützt. | FALSE |
tez.am.task.max.failed.attempts |
Die maximale Anzahl von Versuchen, die bei einer bestimmten Aufgabe fehlschlagen können, bevor die Aufgabe fehlschlägt. Bei dieser Zahl werden manuell abgebrochene Versuche nicht mitgezählt. | 3 |
tez.am.vertex.cleanup.height |
Eine Entfernung, bei der Tez AM die Vertex-Shuffle-Daten löscht, wenn alle abhängigen Scheitelpunkte vollständig sind. Diese Funktion ist ausgeschaltet, wenn der Wert 0 ist. EMRAmazon-Versionen 6.8.0 und höher unterstützen diese Funktion. | 0 |
tez.client.asynchronous-stop |
Option, die EMR Serverless veranlasst, ATS Ereignisse zu übertragen, bevor der Hive-Treiber beendet wird. | FALSE |
tez.grouping.max-size |
Die obere Größenbeschränkung (in Byte) eines gruppierten Splits. Diese Grenze verhindert übermäßig große Teilungen. | 1073741824 |
tez.grouping.min-size |
Die untere Größenbeschränkung (in Byte) eines gruppierten Splits. Diese Grenze verhindert zu viele kleine Teilungen. | 16777216 |
tez.runtime.io.sort.mb |
Die Größe des Soft-Buffers, wenn Tez die Ausgabe sortiert, wird sortiert. | Der optimale Wert wird auf der Grundlage des Tez-Taskspeichers berechnet |
tez.runtime.unordered.output.buffer.size-mb |
Die Größe des zu verwendenden Puffers, wenn Tez nicht direkt auf die Festplatte schreibt. | Der optimale Wert wird auf der Grundlage des Tez-Taskspeichers berechnet |
tez.shuffle-vertex-manager.max-src-fraction |
Der Anteil der Quellaufgaben, die abgeschlossen werden müssen, bevor EMR Serverless alle Aufgaben für den aktuellen Scheitelpunkt plant (im Fall einer ScatterGather Verbindung). Die Anzahl der Aufgaben, die für den aktuellen Scheitelpunkt zur Planung bereit sind, skaliert linear zwischen und. min-fraction max-fraction Dies ist der Standardwert odertez.shuffle-vertex-manager.min-src-fraction , je nachdem, welcher Wert größer ist. |
0.75 |
tez.shuffle-vertex-manager.min-src-fraction |
Der Anteil der Quellaufgaben, die abgeschlossen werden müssen, bevor EMR Serverless Aufgaben für den aktuellen Scheitelpunkt plant (im Fall einer Verbindung). ScatterGather |
0,25 |
tez.task.emr-serverless.launch.env.[ |
Option zum Festlegen der Umgebungsvariablen im Tez-Taskprozess. Bei Tez-Aufgaben überschreibt dieser Wert den Wert. hive.emr-serverless.launch.env.[ |
|
tez.task.log.level |
Die Root-Protokollierungsebene, die EMR Serverless an die Tez-Aufgaben weitergibt. | INFO |
tez.yarn.ats.event.flush.timeout.millis |
Die maximale Zeit, in der AM warten sollte, bis Ereignisse gelöscht werden, bevor das System heruntergefahren wird. | 300000 |
Hive-Jobbeispiele
Das folgende Codebeispiel zeigt, wie eine Hive-Abfrage mit dem ausgeführt wird. StartJobRun
API
aws emr-serverless start-job-run \ --application-id
application-id
\ --execution-role-arnjob-role-arn
\ --job-driver '{ "hive": { "query": "s3://amzn-s3-demo-bucket
/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.log.explain.output=false" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "hive.exec.scratchdir": "s3://amzn-s3-demo-bucket
/emr-serverless-hive/hive/scratch", "hive.metastore.warehouse.dir": "s3://amzn-s3-demo-bucket
/emr-serverless-hive/hive/warehouse", "hive.driver.cores": "2", "hive.driver.memory": "4g", "hive.tez.container.size": "4096", "hive.tez.cpu.vcores": "1" } }] }'
Weitere Beispiele für die Ausführung von Hive-Jobs finden Sie im EMRServerless