Hive ジョブ - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Hive ジョブ

type パラメータを に設定して、アプリケーションで Hive ジョブを実行できますHIVE。ジョブは、Amazon EMRリリースバージョンと互換性のある Hive バージョンと互換性がある必要があります。例えば、Amazon EMRリリース 6.6.0 のアプリケーションでジョブを実行する場合、ジョブは Apache Hive 3.1.2 と互換性がある必要があります。各リリースのアプリケーションバージョンの詳細については、「」を参照してくださいAmazon EMR Serverless リリースバージョン

Hive ジョブパラメータ

を使用して Hive ジョブStartJobRunAPIを実行する場合は、次のパラメータを指定する必要があります。

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.[KEY] Hive ドライバー、Tez AM、Tez タスクなど、すべての Hive 固有のプロセスでKEY環境変数を設定するオプション。
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 BIETLまたは のいずれかの値が必要です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 NONEMINIMALまたは のいずれかの値が必要です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 厳密なタイプの安全チェックを有効にし、 stringbigintの両方との比較をオフにするオプションdouble TRUE
hive.support.quoted.identifiers NONE または の値が必要ですCOLUMNNONE は、識別子で有効な英数字とアンダースコア文字のみを意味します。 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.[KEY] Tez AM プロセスでKEY環境変数を設定するオプション。Tez AM の場合、この値はhive.emr-serverless.launch.env.[KEY]値を上書きします。
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.[KEY] Tez タスクプロセスでKEY環境変数を設定するオプション。Tez タスクの場合、この値はhive.emr-serverless.launch.env.[KEY]値を上書きします。
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-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" } }] }'

EMR サーバーレスサンプル GitHub リポジトリで Hive ジョブを実行する方法のその他の例があります。