[解決済み] MSCK REPAIR TABLEは裏で何をしているのか、なぜこんなに遅いのか?
質問内容
私は、以下のことを知っています。
MSCK REPAIR TABLE
は、外部テーブルの現在のパーティションでメタストアを更新します。
そのために必要なのは
ls
テーブルのルートフォルダで(テーブルが1つのカラムでパーティショニングされている場合)、そのすべてのパーティションを取得するために、明らかに < 1s 操作を行います。
しかし、実際には、この操作には 非常に長い を実行する時間(あるいは AWS Athenaで実行した場合、タイムアウトが発生します。 ).
そこで質問なのですが
MSCK REPAIR TABLE
の裏側で実際に行われていること、そしてその理由とは?
MSCK REPAIR TABLEはどのようにパーティションを見つけるのですか?
一応、追加データ。
<サブ データはすべてS3上にあり、EMR(Hive)またはAthena(Presto)で実行すると遅くなります。テーブルには〜450のパーティションがあり、各パーティションには平均90ファイル、パーティション全体で3ギガバイト、ファイルはApacheパーケットフォーマットです。
解決方法は?
ディレクトリ構造を読み込んでパーティションを作成し、ハイブのメタストアを更新するという意味では、その通りです。実は最近、このコマンドはメタストアから存在しないパーティションを削除するように改良されました。この例では、パーティション・キーが1レベルしかないため、非常に単純です。複数のパーティション・キー(実際には2~3個のパーティション・キーが一般的です)を持つテーブルを考えてみましょう。
msck repair
は、テーブルディレクトリの下にあるすべてのサブディレクトリをフルツリー探索し、ファイル名を解析し、ファイル名が有効であることを確認し、パーティションがメタストアに既に存在するかどうかをチェックし、メタストアに存在しないパーティションだけを追加しなければならないでしょう。ファイルシステムの各リストは、HDFSの場合はネームノードへのRPC、S3やADLSの場合はウェブサービス呼び出しとなり、かなりの時間がかかることに注意してください。さらに、パーティションがすでにメタストアに存在するかどうかを判断するために、メタストアが知っているテーブルのすべてのパーティションをリストアップする必要があります。これらの手順はいずれも、大規模なテーブルに対するコマンドにかかる時間を増加させる可能性があります。msck repair tableの性能は最近のHive 2.3.0でかなり改善されました(詳細はHIVE-15879を参照してください)。をチューニングするとよいでしょう。
hive.metastore.fshandler.threads
と
hive.metastore.batch.retrieve.max
を使用して、コマンドの性能を向上させました。
関連
-
[解決済み】S3 Bucket アクションがどのリソースにも適用されない
-
[解決済み] Amazon SQSを複数のコンシューマで使用する
-
[解決済み] s3 - HeadObject 操作を呼び出すときに、エラーが発生しました (403)。Forbidden
-
[解決済み] AWS ElasticsearchとAWS Redshiftの違いは何ですか?
-
[解決済み] コード NoSuchBucket
-
[解決済み] List<AWS::EC2::Subnet::Id> 型のパラメータをネストしたCloudFormationテンプレートに渡す。
-
[解決済み] API Gatewayにアクセスする際に認証トークンが見つからない?
-
[解決済み] AWSの169.254.169.254IPアドレスは何が特別なのか?[クローズド]
-
[解決済み] amazon dynamodbのパーティションキーとソートキーの違いは何ですか?
-
[解決済み】FilezillaとSFTPを使用してAmazon EC2のファイルディレクトリに接続する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] RDS コンソールで Aurora の読み取りレプリカを作成するオプションが表示されない
-
[解決済み] エラー: networkMode 'awsvpc' が指定された場合、ネットワーク構成を提供する必要があります。
-
[解決済み] SNS/SMSのログはどこにありますか?クラウドウォッチ空
-
[解決済み] 新しいIAM管理者ユーザーに "この操作を実行する権限がありません "と表示される
-
[解決済み] AWS SNSとAWS SQSのFIFOキューを統合することは可能か?
-
[解決済み] API Gatewayにアクセスする際に認証トークンが見つからない?
-
[解決済み] AWSプライベートリンクとVPCエンドポイント
-
[解決済み] S3バケットを丸ごとダウンロードする?
-
[解決済み] AWS EFS vs EBS vs S3(違い&いつ使う?)【終了しました。
-
[解決済み】FilezillaとSFTPを使用してAmazon EC2のファイルディレクトリに接続する。