翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Hive ジョブ
type
パラメータを に設定して、アプリケーションで Hive ジョブを実行できますHIVE
。ジョブは、Amazon EMRリリースバージョンと互換性のある Hive バージョンと互換性がある必要があります。例えば、Amazon EMRリリース 6.6.0 のアプリケーションでジョブを実行する場合、ジョブは Apache Hive 3.1.2 と互換性がある必要があります。各リリースのアプリケーションバージョンの詳細については、「」を参照してくださいAmazon EMR Serverless リリースバージョン。
Hive ジョブパラメータ
を使用して Hive ジョブStartJobRun
APIを実行する場合は、次のパラメータを指定する必要があります。
Hive ジョブランタイムロール
を使用してexecutionRoleArn
、アプリケーションが Hive ジョブの実行に使用するIAMロールARNの を指定します。このロールには、次のアクセス許可が含まれている必要があります。
-
データが存在する S3 バケットまたはその他のデータソースからの読み取り
-
Hive クエリファイルと init クエリファイルが存在する S3 バケットまたはプレフィックスから読み取る
-
Hive Scratch ディレクトリと Hive Metastore ウェアハウスディレクトリが存在する S3 バケットへの読み取りと書き込み
-
最終出力を書き込む予定の S3 バケットに書き込む
-
が
S3MonitoringConfiguration
指定する S3 バケットまたはプレフィックスにログを書き込む -
KMS キーを使用して S3 バケット内のデータを暗号化する場合のKMSキーへのアクセス
-
AWS Glue データカタログへのアクセス
Hive ジョブが他のデータソースとの間でデータを読み取りまたは書き込みする場合は、このIAMロールで適切なアクセス許可を指定します。これらのアクセス許可をIAMロールに提供しないと、ジョブが失敗する可能性があります。詳細については、「Amazon EMR Serverless のジョブランタイムロール」を参照してください。
Hive ジョブドライバーパラメータ
jobDriver
を使用して、ジョブに入力を提供します。ジョブドライバーパラメータは、実行するジョブタイプに対して 1 つの値のみを受け入れます。をジョブタイプhive
として指定すると、EMRServerless は Hive クエリを jobDriver
パラメータに渡します。Hive ジョブには次のパラメータがあります。
-
query
– これは、Amazon S3 で実行する Hive クエリファイルへの参照です。 -
parameters
– 上書きする追加の Hive 設定プロパティです。プロパティを上書きするには、 としてこのパラメータに渡します--hiveconf
。変数を上書きするには、 としてこのパラメータに渡しますproperty=value
--hivevar
。key=value
-
initQueryFile
– これは init Hive クエリファイルです。Hive はクエリの前にこのファイルを実行し、それを使用してテーブルを初期化できます。
Hive 設定オーバーライドパラメータ
を使用してconfigurationOverrides
、モニタリングレベルおよびアプリケーションレベルの設定プロパティを上書きします。このパラメータは、次の 2 つのフィールドを持つJSONオブジェクトを受け入れます。
-
monitoringConfiguration
– このフィールドを使用して、EMRサーバーレスジョブに Hive ジョブのログを保存する Amazon S3 URL (s3MonitoringConfiguration
) を指定します。このバケットは、アプリケーションをホスト AWS アカウント する と同じ と、ジョブが実行され AWS リージョン ている と同じ で作成してください。 -
applicationConfiguration
– このフィールドに設定オブジェクトを指定して、アプリケーションのデフォルト設定を上書きできます。短縮構文を使用して設定を指定するか、JSONファイル内の設定オブジェクトを参照できます。設定オブジェクトは、分類、プロパティ、オプションの入れ子になっている設定で構成されます。プロパティは、そのファイル内で上書きする設定で構成されます。1 つのJSONオブジェクトで複数のアプリケーションに複数の分類を指定できます。注記
使用可能な設定分類は、特定の EMR Serverless リリースによって異なります。例えば、カスタム Log4j
spark-driver-log4j2
と の分類spark-executor-log4j2
は、リリース 6.8.0 以降でのみ使用できます。
アプリケーションオーバーライドと Hive パラメータで同じ設定を渡すと、Hive パラメータが優先されます。次のリストでは、設定を最優先度から最優先度にランク付けします。
-
で Hive パラメータの一部として提供する設定
--hiveconf
。property=value
-
アプリケーションの一部として提供する設定は、ジョブの開始時に上書きされます。
-
アプリケーションの作成
runtimeConfiguration
時に の一部として提供する設定。 -
Amazon がリリースEMRに割り当てる最適化設定。
-
アプリケーションのデフォルトのオープンソース設定。
アプリケーションレベルでの設定の宣言と、ジョブ実行中の設定の上書きの詳細については、「」を参照してくださいEMR Serverless のデフォルトのアプリケーション設定。
Hive ジョブのプロパティ
次の表に、Hive ジョブを送信するときに設定する必要がある必須プロパティを示します。
設定 | 説明 |
---|---|
hive.exec.scratchdir |
Hive ジョブの実行中に EMR Serverless が一時ファイルを作成する Amazon S3 の場所。 |
hive.metastore.warehouse.dir |
Hive のマネージドテーブルのデータベースの Amazon S3 の場所。 |
次の表に、オプションの Hive プロパティと、Hive ジョブを送信するときに上書きできるデフォルト値を示します。
設定 | 説明 | デフォルト値 |
---|---|---|
fs.s3.customAWSCredentialsProvider |
使用する AWS 認証情報プロバイダー。 | com.amazonaws.auth.DefaultAWSCredentialsProviderChain |
fs.s3a.aws.credentials.provider |
S3A ファイルシステムで使用する AWS 認証情報プロバイダー。 | com.amazonaws.auth.DefaultAWSCredentialsProviderChain |
hive.auto.convert.join |
入力ファイルサイズに基づいて、共通結合を Mapjoins に自動変換するオプション。 | TRUE |
hive.auto.convert.join.noconditionaltask |
Hive が入力ファイルサイズに基づいて共通結合を mapjoin に変換するときに最適化を有効にするオプション。 | TRUE |
hive.auto.convert.join.noconditionaltask.size |
結合は、このサイズ未満の Mapjoin に直接変換されます。 | 最適な値は Tez タスクメモリに基づいて計算されます |
hive.cbo.enable |
Calcite フレームワークでコストベースの最適化を有効にするオプション。 | TRUE |
hive.cli.tez.session.async |
Hive クエリのコンパイル中にバックグラウンド Tez セッションを開始するオプション。に設定するとfalse 、Hive クエリのコンパイル後に Tez AM が起動します。 |
TRUE |
hive.compute.query.using.stats |
Hive をアクティブ化して、メタストアに保存された統計を使用して特定のクエリに回答するオプション。基本的な統計については、 hive.stats.autogather を に設定しますTRUE 。クエリのより高度なコレクションについては、 を実行しますanalyze table queries 。 |
TRUE |
hive.default.fileformat |
CREATE TABLE ステートメントのデフォルトのファイル形式。CREATE TABLE コマンドSTORED AS [FORMAT] で を指定した場合、これを明示的に上書きできます。 |
TEXTFILE |
hive.driver.cores |
Hive ドライバープロセスに使用するコアの数。 | 2 |
hive.driver.disk |
Hive ドライバーのディスクサイズ。 | 20G |
hive.driver.disk.type |
Hive ドライバーのディスクタイプ。 | 標準 |
hive.tez.disk.type |
Tez ワーカーのディスクサイズ。 | 標準 |
hive.driver.memory |
Hive ドライバープロセスごとに使用するメモリの量。Hive アプリケーションマスターCLIと Tez アプリケーションマスターは、このメモリをヘッドルームの 20% と等しく共有します。 | 6G |
hive.emr-serverless.launch.env.[ |
Hive ドライバー、Tez AM、Tez タスクなど、すべての Hive 固有のプロセスで 環境変数を設定するオプション。 |
|
hive.exec.dynamic.partition |
DML/ で動的パーティションを有効にするオプションDDL。 | TRUE |
hive.exec.dynamic.partition.mode |
厳格モードを使用するか、非厳格モードを使用するかを指定するオプション。厳格モードでは、すべてのパーティションを誤って上書きする場合に備えて、少なくとも 1 つの静的パーティションを指定する必要があります。非厳密なモードでは、すべてのパーティションを動的にすることができます。 | strict |
hive.exec.max.dynamic.partitions |
Hive が作成する動的パーティションの最大数。 | 1,000 |
hive.exec.max.dynamic.partitions.pernode |
Hive が各マッパーノードとレデューサーノードに作成する動的パーティションの最大数。 | 100 |
hive.exec.orc.split.strategy |
、BI 、ETL または のいずれかの値が必要ですHYBRID 。これはユーザーレベルの設定ではありません。 は、クエリの実行よりも分割生成に費やす時間を減らすようにBI 指定します。 は分割生成により多くの時間を費やすようにETL 指定します。 は、ヒューリスティックに基づいて上記の戦略の選択HYBRID を指定します。 |
HYBRID |
hive.exec.reducers.bytes.per.reducer |
リデューサーあたりのサイズ。デフォルトは 256 MB です。入力サイズが 1G の場合、ジョブは 4 つのリデューサーを使用します。 | 256000000 |
hive.exec.reducers.max |
レデューサーの最大数。 | 256 |
hive.exec.stagingdir |
Hive がテーブルの場所内と、 hive.exec.scratchdir プロパティで指定されたスクラッチディレクトリの場所内に作成する一時ファイルを保存するディレクトリの名前。 |
.hive-staging |
hive.fetch.task.conversion |
、NONE 、MINIMAL または のいずれかの値が必要ですMORE 。Hive は、選択クエリを 1 つのFETCH タスクに変換できます。これにより、レイテンシーが最小限に抑えられます。 |
MORE |
hive.groupby.position.alias |
Hive がGROUP BY ステートメントで列位置エイリアスを使用するようにするオプション。 |
FALSE |
hive.input.format |
デフォルトの入力形式。で問題が発生した場合HiveInputFormat は、 を に設定しますCombineHiveInputFormat 。 |
org.apache.hadoop.hive.ql.io.CombineHiveInputFormat |
hive.log.explain.output |
Hive ログ内のクエリの拡張出力の説明を有効にするオプション。 | FALSE |
hive.log.level |
Hive ログ記録レベル。 | INFO |
hive.mapred.reduce.tasks.speculative.execution |
レデューサーの投機的起動を有効にするオプション。Amazon EMR 6.10.x 以前でのみサポートされています。 | TRUE |
hive.max-task-containers |
同時コンテナの最大数。設定されたマッパーメモリにこの値を乗算して、計算とタスクのプリエンプションで使用する使用可能なメモリを決定します。 | 1,000 |
hive.merge.mapfiles |
マップのみのジョブの最後に小さなファイルがマージされるオプション。 | TRUE |
hive.merge.size.per.task |
ジョブの最後にマージされたファイルのサイズ。 | 256000000 |
hive.merge.tezfiles |
Tez の最後に小さなファイルのマージを有効にするオプションDAG。 | FALSE |
hive.metastore.client.factory.class |
IMetaStoreClient インターフェイスを実装するオブジェクトを生成するファクトリクラスの名前。 |
com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory |
hive.metastore.glue.catalogid |
AWS Glue Data Catalog がメタストアとして機能し、ジョブとは異なる AWS アカウント で実行される AWS アカウント 場合、ジョブが実行されている の ID。 | NULL |
hive.metastore.uris |
メタストアクライアントURIがリモートメタストアへの接続に使用するドリフト。 | NULL |
hive.optimize.ppd |
述語プッシュダウンを有効にするオプション。 | TRUE |
hive.optimize.ppd.storage |
ストレージハンドラーへの述語プッシュダウンを有効にするオプション。 | TRUE |
hive.orderby.position.alias |
Hive がORDER BY ステートメントで列位置エイリアスを使用するようにするオプション。 |
TRUE |
hive.prewarm.enabled |
Tez のコンテナ事前ウォームを有効にするオプション。 | FALSE |
hive.prewarm.numcontainers |
Tez の事前ウォームするコンテナの数。 | 10 |
hive.stats.autogather |
INSERT OVERWRITE コマンド中に Hive が基本統計を自動的に収集できるようにするオプション。 |
TRUE |
hive.stats.fetch.column.stats |
メタストアからの列統計の取得をオフにするオプション。列の数が多い場合、列統計のフェッチは高価になる可能性があります。 | FALSE |
hive.stats.gather.num.threads |
partialscan および noscan analyze コマンドがパーティションテーブルに使用するスレッドの数。これは、 StatsProvidingRecordReader ( など) を実装するファイル形式にのみ適用されますORC。 |
10 |
hive.strict.checks.cartesian.product |
厳密なデカルト結合チェックを有効にするオプション。これらのチェックでは、デカルト製品 (クロス結合) は許可されません。 | FALSE |
hive.strict.checks.type.safety |
厳密なタイプの安全チェックを有効にし、 string と bigint の両方との比較をオフにするオプションdouble 。 |
TRUE |
hive.support.quoted.identifiers |
NONE または の値が必要ですCOLUMN 。 NONE は、識別子で有効な英数字とアンダースコア文字のみを意味します。 COLUMN は、列名に任意の文字を含めることができることを示します。 |
COLUMN |
hive.tez.auto.reducer.parallelism |
Tez 自動削減並列処理機能を有効にするオプション。Hive は引き続きデータサイズを推定し、並列処理の推定を設定します。Tez はソース頂点の出力サイズをサンプリングし、必要に応じて実行時に見積りを調整します。 | TRUE |
hive.tez.container.size |
Tez タスクプロセスごとに使用するメモリの量。 | 6144 |
hive.tez.cpu.vcores |
Tez タスクごとに使用するコアの数。 | 2 |
hive.tez.disk.size |
各タスクコンテナのディスクサイズ。 | 20G |
hive.tez.input.format |
Tez AM での分割生成の入力形式。 | org.apache.hadoop.hive.ql.io.HiveInputFormat |
hive.tez.min.partition.factor |
自動リデューサー並列処理をオンにするときに Tez が指定するレデューサーの下限。 | 0.25 |
hive.vectorized.execution.enabled |
ベクトル化されたクエリ実行モードを有効にするオプション。 | TRUE |
hive.vectorized.execution.reduce.enabled |
クエリ実行のレデュース側のベクトル化モードを有効にするオプション。 | TRUE |
javax.jdo.option.ConnectionDriverName |
JDBC メタストアのドライバークラス名。 | org.apache.derby.jdbc.EmbeddedDriver |
javax.jdo.option.ConnectionPassword |
メタストアデータベースに関連付けられたパスワード。 | NULL |
javax.jdo.option.ConnectionURL |
JDBC メタストアJDBCの接続文字列。 | jdbc:derby:;databaseName=metastore_db;create=true |
javax.jdo.option.ConnectionUserName |
メタストアデータベースに関連付けられているユーザー名。 | NULL |
mapreduce.input.fileinputformat.split.maxsize |
入力形式が の場合の分割計算中の分割の最大サイズorg.apache.hadoop.hive.ql.io.CombineHiveInputFormat 。値 0 (ゼロ) は、制限がないことを示します。 |
0 |
tez.am.dag.cleanup.on.completion |
DAG 完了時にシャッフルデータのクリーンアップを有効にするオプション。 | TRUE |
tez.am.emr-serverless.launch.env.[ |
Tez AM プロセスで 環境変数を設定するオプション。Tez AM の場合、この値はhive.emr-serverless.launch.env.[ 値を上書きします。 |
|
tez.am.log.level |
EMR Serverless が Tez アプリケーションマスターに渡すルートログ記録レベル。 | INFO |
tez.am.sleep.time.before.exit.millis |
EMR サーバーレスは、AM シャットダウンリクエストの後に、この期間の後にATSイベントをプッシュする必要があります。 | 0 |
tez.am.speculation.enabled |
遅いタスクの投機的な起動を引き起こすオプション。これにより、一部のタスクの実行が遅くなっている場合、マシンが不良または遅い場合にジョブのレイテンシーを減らすことができます。Amazon EMR 6.10.x 以前でのみサポートされています。 | FALSE |
tez.am.task.max.failed.attempts |
タスクが失敗する前に、特定のタスクで失敗する可能性がある最大試行回数。この数は、手動で終了した試行数をカウントしません。 | 3 |
tez.am.vertex.cleanup.height |
すべての依存頂点が完了すると、Tez AM が頂点シャッフルデータを削除する距離。この機能は、値が 0 の場合にオフになります。Amazon EMRバージョン 6.8.0 以降では、この機能がサポートされています。 | 0 |
tez.client.asynchronous-stop |
Hive ドライバーを終了する前に EMR Serverless がATSイベントをプッシュするオプション。 | FALSE |
tez.grouping.max-size |
グループ化された分割の最大サイズ制限 (バイト単位)。この制限により、過度に大きな分割が防止されます。 | 1073741824 |
tez.grouping.min-size |
グループ化された分割の下限サイズ (バイト単位)。この制限により、小さすぎる分割が防止されます。 | 16777216 |
tez.runtime.io.sort.mb |
Tez が出力をソートするときのソフトバッファのサイズはソートされます。 | 最適な値は Tez タスクメモリに基づいて計算されます |
tez.runtime.unordered.output.buffer.size-mb |
Tez がディスクに直接書き込まない場合に使用するバッファのサイズ。 | 最適な値は Tez タスクメモリに基づいて計算されます |
tez.shuffle-vertex-manager.max-src-fraction |
EMR Serverless が現在の頂点のすべてのタスクをスケジュールする前に完了する必要があるソースタスクの割合 (ScatterGather 接続の場合)。現在の頂点でスケジューリングできるタスクの数は、 min-fraction と の間で線形にスケールされますmax-fraction 。これはデフォルト値または tez.shuffle-vertex-manager.min-src-fraction のいずれか大きい方です。 |
0.75 |
tez.shuffle-vertex-manager.min-src-fraction |
EMR Serverless が現在の頂点のタスクをスケジュールする前に完了する必要があるソースタスクの割合 (ScatterGather 接続の場合)。 |
0.25 |
tez.task.emr-serverless.launch.env.[ |
Tez タスクプロセスで 環境変数を設定するオプション。Tez タスクの場合、この値はhive.emr-serverless.launch.env.[ 値を上書きします。 |
|
tez.task.log.level |
EMR Serverless が Tez タスクに渡すルートログ記録レベル。 | INFO |
tez.yarn.ats.event.flush.timeout.millis |
シャットダウンする前にイベントがフラッシュされるまで AM が待機する最大時間。 | 300000 |
Hive ジョブの例
次のコード例は、 で Hive 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" } }] }'
EMR サーバーレスサンプル