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