Jobs bei Hive - Amazon EMR

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 StartJobRunAPI, um einen Hive-Job auszuführen, müssen Sie die folgenden Parameter angeben.

Runtime-Rolle für Hive-Jobs

Geben executionRoleArnSie 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 property=value. Um Variablen zu überschreiben, übergeben Sie sie an diesen Parameter als--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. JSON

    Anmerkung

    Die verfügbaren Konfigurationsklassifizierungen variieren je nach EMR Serverless-Version. Zum Beispiel Klassifizierungen für benutzerdefiniertes Log4j spark-driver-log4j2 und spark-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 property=value angeben.

  • 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.[KEY] Option zum Festlegen der KEY 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. BIgibt an, dass Sie weniger Zeit mit der Split-Generierung als mit der Ausführung von Abfragen verbringen möchten. ETLgibt an, dass Sie mehr Zeit mit der Split-Generierung verbringen möchten. HYBRIDspezifiziert 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. NONEimpliziert, dass nur alphanumerische Zeichen und Unterstriche in Bezeichnern gültig sind. COLUMNimpliziert, 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.[KEY] Option zum Festlegen der KEY Umgebungsvariablen im Tez AM-Prozess. Für Tez AM überschreibt dieser Wert den Wert. hive.emr-serverless.launch.env.[KEY]
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.[KEY] Option zum Festlegen der KEY Umgebungsvariablen im Tez-Taskprozess. Bei Tez-Aufgaben überschreibt dieser Wert den Wert. hive.emr-serverless.launch.env.[KEY]
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-arn job-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 Samples-Repository. GitHub