【トラブル】【Hive】テーブルアクセス時に例外「Vertex failed, ... InvalidInputException」が発生する

■ はじめに

結果的には、以下のトラブルと同じような現象が発生したのだが、
色々と背景が異なるのでメモしておく。

EMR / DBアクセス に関するトラブルシューティング
https://dk521123.hatenablog.com/entry/2021/06/17/114611

目次

【1】現象
【2】エラー内容
【3】動作環境
【4】原因
【5】解決案
【6】補足

【1】現象

EMRで、パーティション付きのテーブルに
アクセスしようとしたところ、以下「エラー内容」が発生した。

【2】エラー内容

Status: Failed
Vertex failed, vertexName=Map 1, vertexId=vertex_1471845991138_0085_1_00,
diagnostics= Vertex vertex_1471845991138_0085_1_00 Map 1 killed/failed
 due to:ROOT_INPUT_INIT_FAILURE,
Vertex Input: values__tmp__table__1 initializer failed,
vertex=vertex_1471845991138_0085_1_00 Map 1 org.apache.hadoop.mapred.InvalidInputException:
Input path does not exist:
 s3://your-bucket-name/xxx/sample_db/sample_table/updated_date=20210706
 org.apache.hadoop.mapred.FileInputFormat.singleThreadedListStatus(FileInputFormat.java:260)
 ...

【3】動作環境

* Amazon EMR v5.29.0
* Spark 2.4.4
* Hive 2.3.6

【4】原因

パーティション(今回の場合「updated_date=20210706」)が存在しているのだが
S3上にパス(ファイル)が存在しなかったため、
「Input path does not exist: s3://your-bucket-name/xxx/sample_db/sample_table/updated_date=20210706」
となり、例外が発生した。

補足:調査方法

以下、確認手順。

[1] AWS management consoleの AWS Glueの画面に遷移
[2] 右側の [Tables]をクリック
[3] 対象Tableを選択
 => 今回の場合、「sample_table」。
[4] [View partitions]でパーティションを確認する
 => 今回の場合、「20210706」の「View files」押下すると対象のS3に飛ぶのだが
  ファイルが存在しないことが確認できた

【5】解決案

1)直接、データを挿入(とりあえずでよければダミーデータ)し、
  存在しない状態を回避する

2)boto3 API 「delete_partition」などで パーティションを削除する
 => 以下の関連記事を参照のこと

https://dk521123.hatenablog.com/entry/2021/06/09/113458

【6】補足

 動かく目的だけであれば、上記「【5】解決案」でいいのだが
そもそもなんでデータがなくなってたかを調査しておいた方がいい。

 手動でファイル消していたとかであればよかったのだが
後々、別のバグがあったことに気付く、、、
詳細は、以下の関連記事を参照のこと。

PySpark ~ パーティション単位で上書きするには ~
https://dk521123.hatenablog.com/entry/2021/07/07/093147

関連記事

EMR / DBアクセス に関するトラブルシューティング
https://dk521123.hatenablog.com/entry/2021/06/17/114611
Amazon EMR に関するトラブルシューティング
https://dk521123.hatenablog.com/entry/2020/08/05/144724
Hive に関するトラブルシューティング
https://dk521123.hatenablog.com/entry/2020/11/20/174039
Hive / Partition に関するトラブルシューティング
https://dk521123.hatenablog.com/entry/2020/05/28/175428
エラー「SemanticException Cartesian products are disabled for safety reasons」が発生する
https://dk521123.hatenablog.com/entry/2021/06/12/093046
AWS Glue ~ Boto3 / パーティション操作編 ~
https://dk521123.hatenablog.com/entry/2021/06/09/113458
PySpark ~ パーティション単位で上書きするには ~
https://dk521123.hatenablog.com/entry/2021/07/07/093147