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à.
Utilizzo delle configurazioni Hive quando si EMR eseguono lavori Serverless
È possibile eseguire lavori Hive su un'applicazione con il type
parametro impostato su. HIVE
I lavori devono essere compatibili con la versione di Hive compatibile con la versione di EMR rilascio di Amazon. Ad esempio, quando esegui lavori su un'applicazione con Amazon EMR release 6.6.0, il tuo lavoro deve essere compatibile con Apache Hive 3.1.2. Per informazioni sulle versioni dell'applicazione per ogni versione, consulta. Versioni di rilascio di Amazon EMR Serverless
Parametri del lavoro Hive
Quando si utilizza il StartJobRun
APIper eseguire un processo Hive, è necessario specificare i seguenti parametri.
Parametri obbligatori
Ruolo Hive Job Runtime
executionRoleArn
Utilizzatelo ARN per specificare il IAM ruolo utilizzato dall'applicazione per eseguire i job Hive. Questo ruolo deve contenere le seguenti autorizzazioni:
-
Leggi i dati dai bucket S3 o da altre fonti di dati in cui risiedono i tuoi dati
-
Leggi dai bucket o dai prefissi S3 in cui risiedono il file di query Hive e il file di query init
-
Leggi e scrivi nei bucket S3 in cui risiedono la directory Hive Scratch e la directory di magazzino Hive Metastore
-
Scrivi nei bucket S3 in cui intendi scrivere l'output finale
-
Scrivi i log in un bucket o prefisso S3 che specifica
S3MonitoringConfiguration
-
Accesso alle KMS chiavi se utilizzi KMS le chiavi per crittografare i dati nel tuo bucket S3
-
Accesso al AWS Glue Data Catalog
Se il tuo lavoro Hive legge o scrive dati da o verso altre fonti di dati, specifica le autorizzazioni appropriate per questo ruolo. IAM Se non fornisci queste autorizzazioni al IAM ruolo, il tuo lavoro potrebbe fallire. Per ulteriori informazioni, consulta Ruoli Job Runtime per Amazon EMR Serverless.
Parametro Hive Job Driver
jobDriver
Utilizzato per fornire input al lavoro. Il parametro job driver accetta solo un valore per il tipo di processo che si desidera eseguire. Quando specificate hive
come tipo di lavoro, EMR Serverless passa una query Hive al jobDriver
parametro. I job Hive hanno i seguenti parametri:
-
query
— Questo è il riferimento in Amazon S3 al file di query Hive che desideri eseguire. -
parameters
— Queste sono le proprietà di configurazione aggiuntive di Hive che desideri sovrascrivere. Per sovrascrivere le proprietà, passale a questo parametro come.--hiveconf
Per sovrascrivere le variabili, passale a questo parametro come.property=value
--hivevar
key=value
-
initQueryFile
— Questo è il file di query init Hive. Hive esegue questo file prima della query e può usarlo per inizializzare le tabelle.
Parametro di sovrascrittura della configurazione Hive
Utilizzato configurationOverrides
per sovrascrivere le proprietà di configurazione a livello di monitoraggio e a livello di applicazione. Questo parametro accetta un JSON oggetto con i due campi seguenti:
-
monitoringConfiguration
— Utilizza questo campo per specificare Amazon S3 URL (s3MonitoringConfiguration
) in cui desideri che il job EMR Serverless memorizzi i log del tuo processo Hive. Assicurati di creare questo bucket con lo stesso Account AWS che ospita l'applicazione e nello stesso luogo in Regione AWS cui è in esecuzione il processo. -
applicationConfiguration
— È possibile fornire un oggetto di configurazione in questo campo per sovrascrivere le configurazioni predefinite per le applicazioni. È possibile utilizzare una sintassi abbreviata per fornire la configurazione oppure fare riferimento all'oggetto di configurazione in un file. JSON Gli oggetti di configurazione sono composti da una classificazione, proprietà e configurazioni nidificate opzionali. Le proprietà sono costituite dalle impostazioni che desideri ignorare in un dato file. È possibile specificare più classificazioni per più applicazioni in un unico oggetto. JSONNota
Le classificazioni di configurazione disponibili variano in base alla specifica versione EMR Serverless. Ad esempio, le classificazioni per Log4j personalizzate
spark-executor-log4j2
sono disponibili solo con le versioni 6.8.0spark-driver-log4j2
e successive.
Se si passa la stessa configurazione in un'applicazione override e nei parametri Hive, i parametri Hive hanno la priorità. L'elenco seguente classifica le configurazioni dalla priorità più alta alla priorità più bassa.
-
Configurazione fornita come parte dei parametri Hive con.
--hiveconf
property=value
-
La configurazione fornita come parte dell'applicazione ha la precedenza quando si avvia un lavoro.
-
La configurazione fornita come parte della configurazione
runtimeConfiguration
quando si crea un'applicazione. -
Configurazioni ottimizzate che Amazon EMR assegna per il rilascio.
-
Configurazioni open source predefinite per l'applicazione.
Per ulteriori informazioni sulla dichiarazione delle configurazioni a livello di applicazione e sulla sovrascrittura delle configurazioni durante l'esecuzione del processo, vedere. Configurazione predefinita dell'applicazione per Serverless EMR
Proprietà del lavoro di Hive
La tabella seguente elenca le proprietà obbligatorie che è necessario configurare quando si invia un lavoro Hive.
Impostazione | Descrizione |
---|---|
hive.exec.scratchdir |
La posizione Amazon S3 in cui EMR Serverless crea file temporanei durante l'esecuzione del job Hive. |
hive.metastore.warehouse.dir |
La posizione Amazon S3 dei database per le tabelle gestite in Hive. |
La tabella seguente elenca le proprietà opzionali di Hive e i relativi valori predefiniti che puoi sostituire quando invii un lavoro Hive.
Impostazione | Descrizione | Valore predefinito |
---|---|---|
fs.s3.customAWSCredentialsProvider |
Il provider di AWS credenziali che desideri utilizzare. | com.amazonaws.auth.d efaultAWSCredentials ProviderChain |
fs.s3a.aws.credentials.provider |
Il provider di AWS credenziali che desideri utilizzare con un file system S3A. | com.amazonaws.auth.d efaultAWSCredentials ProviderChain |
hive.auto.convert.join |
Opzione che attiva la conversione automatica dei join comuni in mapjoin, in base alla dimensione del file di input. | TRUE |
hive.auto.convert.join.noconditionaltask |
Opzione che attiva l'ottimizzazione quando Hive converte un common join in un mapjoin in base alla dimensione del file di input. | TRUE |
hive.auto.convert.join.noconditionaltask.size |
Un join si converte direttamente in un mapjoin di dimensioni inferiori a questa dimensione. | Il valore ottimale viene calcolato in base alla memoria delle attività Tez |
hive.cbo.enable |
Opzione che attiva ottimizzazioni basate sui costi con il framework Calcite. | TRUE |
hive.cli.tez.session.async |
Opzione per avviare una sessione Tez in background durante la compilazione della query Hive. Se impostato sufalse , Tez AM si avvia dopo la compilazione della query Hive. |
TRUE |
hive.compute.query.using.stats |
Opzione che attiva Hive per rispondere a determinate domande con statistiche memorizzate nel metastore. Per le statistiche di base, imposta su. hive.stats.autogather TRUE Per una raccolta di interrogazioni più avanzata, analyze
table queries esegui. |
TRUE |
hive.default.fileformat |
Il formato di file predefinito per le CREATE TABLE istruzioni. Puoi sovrascriverlo in modo esplicito se lo specifichi STORED AS [FORMAT] nel tuo CREATE TABLE comando. |
TEXTFILE |
hive.driver.cores |
Il numero di core da utilizzare per il processo del driver Hive. | 2 |
hive.driver.disk |
La dimensione del disco per il driver Hive. | 20G |
hive.driver.disk.type |
Il tipo di disco per il driver Hive. | Standard |
hive.tez.disk.type |
La dimensione del disco per i tez worker. | Standard |
hive.driver.memory |
La quantità di memoria da utilizzare per ogni processo del driver Hive. Hive CLI e Tez Application Master condividono questa memoria in parti uguali con il 20% di margine di crescita. | 6 G |
hive.emr-serverless.launch.env.[ |
Opzione per impostare la variabile di ambiente in tutti i processi specifici di Hive, come il driver Hive, Tez AM e l'attività Tez. |
|
hive.exec.dynamic.partition |
Opzioni che attivano le partizioni dinamiche in/. DML DDL | TRUE |
hive.exec.dynamic.partition.mode |
Opzione che specifica se si desidera utilizzare la modalità rigorosa o la modalità non rigorosa. In modalità rigorosa, è necessario specificare almeno una partizione statica in caso di sovrascrittura accidentale di tutte le partizioni. In modalità non rigorosa, tutte le partizioni possono essere dinamiche. | strict |
hive.exec.max.dynamic.partitions |
Il numero massimo di partizioni dinamiche create da Hive in totale. | 1000 |
hive.exec.max.dynamic.partitions.pernode |
Numero massimo di partizioni dinamiche che Hive crea in ogni nodo mapper e reducer. | 100 |
hive.exec.orc.split.strategy |
Prevede uno dei seguenti valori:, o. BI ETL HYBRID Questa non è una configurazione a livello utente. BI specifica che si desidera dedicare meno tempo alla generazione frazionata rispetto all'esecuzione delle query. ETL specifica che si desidera dedicare più tempo alla generazione frazionata. HYBRID specifica una scelta delle strategie di cui sopra in base all'euristica. |
HYBRID |
hive.exec.reducers.bytes.per.reducer |
La dimensione di ogni riduttore. L'impostazione predefinita è 256 MB. Se la dimensione di input è 1G, il job utilizza 4 riduttori. | 256000000 |
hive.exec.reducers.max |
Il numero massimo di riduttori. | 256 |
hive.exec.stagingdir |
Il nome della directory che memorizza i file temporanei creati da Hive all'interno delle posizioni delle tabelle e nella posizione della directory scratch specificata nella proprietà. hive.exec.scratchdir |
.hive-staging |
hive.fetch.task.conversion |
Prevede uno dei seguenti valori: NONE MINIMAL , o. MORE Hive è in grado di convertire le interrogazioni di selezione in una singola attività. FETCH Ciò riduce al minimo la latenza. |
MORE |
hive.groupby.position.alias |
Opzione che fa sì che Hive utilizzi un alias di posizione della colonna nelle istruzioni. GROUP BY |
FALSE |
hive.input.format |
Il formato di input predefinito. Imposta su HiveInputFormat se riscontri problemi conCombineHiveInputFormat . |
org.apache.hadoop.hive.ql.io.CombineHiveInputFormat |
hive.log.explain.output |
Opzione che attiva le spiegazioni dell'output esteso per qualsiasi query nel registro di Hive. | FALSE |
hive.log.level |
Il livello di registrazione di Hive. | INFO |
hive.mapred.reduce.tasks.speculative.execution |
Opzione che attiva il lancio speculativo dei riduttori. Supportato solo con Amazon EMR 6.10.x e versioni precedenti. | TRUE |
hive.max-task-containers |
Il numero massimo di contenitori simultanei. La memoria del mapper configurata viene moltiplicata per questo valore per determinare la memoria disponibile utilizzata per il calcolo diviso e la priorità delle attività. | 1000 |
hive.merge.mapfiles |
Opzione che causa l'unione di file di piccole dimensioni alla fine di un lavoro basato sulla sola mappa. | TRUE |
hive.merge.size.per.task |
La dimensione dei file uniti alla fine del lavoro. | 256000000 |
hive.merge.tezfiles |
Opzione che attiva l'unione di file di piccole dimensioni alla fine di un Tez. DAG | FALSE |
hive.metastore.client.factory.class |
Il nome della classe factory che produce oggetti che implementano l'IMetaStoreClient interfaccia. |
com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory |
hive.metastore.glue.catalogid |
Se il AWS Glue Data Catalog funge da metastore ma viene eseguito in un ambiente Account AWS diverso dai lavori, l'ID del Account AWS luogo in cui i lavori sono in esecuzione. | NULL |
hive.metastore.uris |
La parsimonia URI che il client metastore utilizza per connettersi al metastore remoto. | NULL |
hive.optimize.ppd |
Opzione che attiva il predicate pushdown. | TRUE |
hive.optimize.ppd.storage |
Opzione che attiva il pushdown dei predicati verso i gestori di archiviazione. | TRUE |
hive.orderby.position.alias |
Opzione che fa sì che Hive utilizzi un alias di posizione della colonna nelle istruzioni. ORDER BY |
TRUE |
hive.prewarm.enabled |
Opzione che attiva il preriscaldamento del contenitore per Tez. | FALSE |
hive.prewarm.numcontainers |
Il numero di contenitori da preriscaldare per Tez. | 10 |
hive.stats.autogather |
Opzione che fa sì che Hive raccolga automaticamente le statistiche di base durante il comando. INSERT OVERWRITE |
TRUE |
hive.stats.fetch.column.stats |
Opzione che disattiva il recupero delle statistiche delle colonne dal metastore. Il recupero delle statistiche sulle colonne può essere costoso quando il numero di colonne è elevato. | FALSE |
hive.stats.gather.num.threads |
Il numero di thread utilizzati dai comandi partialscan and noscan analysis per le tabelle partizionate. Questo vale solo per i formati di file che implementano StatsProvidingRecordReader (come). ORC |
10 |
hive.strict.checks.cartesian.product |
Opzioni che attivano controlli di join cartesiani rigorosi. Questi controlli non consentono l'utilizzo di un prodotto cartesiano (un cross join). | FALSE |
hive.strict.checks.type.safety |
Opzione che attiva rigorosi controlli di sicurezza tipografici e disattiva il confronto tra entrambi string e. bigint double |
TRUE |
hive.support.quoted.identifiers |
Si aspetta un valore di NONE oCOLUMN . NONE implica che solo i caratteri alfanumerici e i caratteri di sottolineatura siano validi negli identificatori. COLUMN implica che i nomi delle colonne possono contenere qualsiasi carattere. |
COLUMN |
hive.tez.auto.reducer.parallelism |
Opzione che attiva la funzione di parallelismo del riduttore automatico Tez. Hive stima ancora le dimensioni dei dati e imposta le stime di parallelismo. Tez campiona le dimensioni di output dei vertici della sorgente e regola le stime in fase di esecuzione, se necessario. | TRUE |
hive.tez.container.size |
La quantità di memoria da utilizzare per il processo di operazione Tez. | 6144 |
hive.tez.cpu.vcores |
Il numero di core da utilizzare per ogni attività Tez. | 2 |
hive.tez.disk.size |
La dimensione del disco per ogni contenitore di attività. | 20G |
hive.tez.input.format |
Il formato di input per la generazione di split in Tez AM. | org.apache.hadoop.hive.ql.io.HiveInputFormat |
hive.tez.min.partition.factor |
Limite inferiore di riduttori specificato da Tez quando si attiva il parallelismo del riduttore automatico. | 0.25 |
hive.vectorized.execution.enabled |
Opzione che attiva la modalità vettoriale di esecuzione delle query. | TRUE |
hive.vectorized.execution.reduce.enabled |
Opzione che attiva la modalità vettorializzata del lato ridotto dell'esecuzione di una query. | TRUE |
javax.jdo.option.ConnectionDriverName |
Il nome della classe di driver per un metastore. JDBC | org.apache.derby.jdbc.EmbeddedDriver |
javax.jdo.option.ConnectionPassword |
La password associata a un database metastore. | NULL |
javax.jdo.option.ConnectionURL |
La stringa di JDBC connessione per un JDBC metastore. | jdbc:derby:;databaseName=metastore_db;create=true |
javax.jdo.option.ConnectionUserName |
Il nome utente associato a un database metastore. | NULL |
mapreduce.input.fileinputformat.split.maxsize |
La dimensione massima di una divisione durante il calcolo delle suddivisioni quando il formato di input è. org.apache.hadoop.hive.ql.io.CombineHiveInputFormat Un valore pari a 0 indica che non ci sono limiti. |
0 |
tez.am.dag.cleanup.on.completion |
Opzione che attiva la pulizia casuale dei dati al termine. DAG | TRUE |
tez.am.emr-serverless.launch.env.[ |
Opzione per impostare la variabile di ambiente nel processo Tez AM. Per Tez AM, questo valore sostituisce il valore. hive.emr-serverless.launch.env.[ |
|
tez.am.log.level |
Il livello di registrazione root che EMR Serverless passa all'app master Tez. | INFO |
tez.am.sleep.time.before.exit.millis |
EMRServerless dovrebbe inviare ATS gli eventi dopo questo periodo di tempo dopo la richiesta di spegnimento di AM. | 0 |
tez.am.speculation.enabled |
Opzione che causa l'avvio speculativo di attività più lente. Ciò può aiutare a ridurre la latenza del lavoro quando alcune attività sono più lente a causa di macchine danneggiate o lente. Supportato solo con Amazon EMR 6.10.x e versioni precedenti. | FALSE |
tez.am.task.max.failed.attempts |
Il numero massimo di tentativi che possono fallire per una determinata attività prima che l'operazione abbia esito negativo. Questo numero non include i tentativi terminati manualmente. | 3 |
tez.am.vertex.cleanup.height |
Una distanza alla quale, se tutti i vertici dipendenti sono completi, Tez AM eliminerà i dati relativi allo shuffle dei vertici. Questa funzione è disattivata quando il valore è 0. EMRLe versioni di Amazon 6.8.0 e successive supportano questa funzionalità. | 0 |
tez.client.asynchronous-stop |
Opzione che fa sì che EMR Serverless invii gli ATS eventi prima che termini il driver Hive. | FALSE |
tez.grouping.max-size |
Il limite massimo di dimensione (in byte) di una divisione raggruppata. Questo limite impedisce suddivisioni eccessivamente grandi. | 1073741824 |
tez.grouping.min-size |
Il limite di dimensione inferiore (in byte) di una divisione raggruppata. Questo limite impedisce troppe suddivisioni di piccole dimensioni. | 16777216 |
tez.runtime.io.sort.mb |
La dimensione del soft buffer quando Tez ordina l'output viene ordinata. | Il valore ottimale viene calcolato in base alla memoria delle attività di Tez |
tez.runtime.unordered.output.buffer.size-mb |
La dimensione del buffer da usare se Tez non scrive direttamente su disco. | Il valore ottimale viene calcolato in base alla memoria delle attività di Tez |
tez.shuffle-vertex-manager.max-src-fraction |
La frazione di attività di origine che deve essere completata prima che EMR Serverless pianifichi tutte le attività per il vertice corrente (in caso di ScatterGather connessione). Il numero di attività pronte per la pianificazione sul vertice corrente varia linearmente tra e. min-fraction max-fraction Il valore predefinito è il valore predefinito o, a seconda del valore maggiore. tez.shuffle-vertex-manager.min-src-fraction |
0.75 |
tez.shuffle-vertex-manager.min-src-fraction |
La frazione di attività di origine che deve essere completata prima che EMR Serverless pianifichi le attività per il vertice corrente (in caso di connessione). ScatterGather |
0.25 |
tez.task.emr-serverless.launch.env.[ |
Opzione per impostare la variabile di ambiente nel processo di attività Tez. Per le attività Tez, questo valore ha la precedenza sul valore. hive.emr-serverless.launch.env.[ |
|
tez.task.log.level |
Il livello di registrazione principale che EMR Serverless passa alle attività Tez. | INFO |
tez.yarn.ats.event.flush.timeout.millis |
Il periodo massimo di attesa che AM deve attendere prima che gli eventi vengano eliminati prima dello spegnimento. | 300000 |
Esempi di lavoro in Hive
Il seguente esempio di codice mostra come eseguire una query Hive con. 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" } }] }'
Puoi trovare altri esempi di come eseguire i job Hive nel repository EMRServerless