【トラブル】【Hive】Hive に関するトラブルシューティング

■ はじめに

https://dk521123.hatenablog.com/entry/2020/05/28/175428

の続き。

Hiveで発生したトラブルをまとめる。

目次

【1】エラー「Cannot inspect org.apache.hadoop.io.IntWritable」が発生する
【2】エラー「java.lang.NoClassDefFoundError: scala/collection/Iterable」が発生する
【3】エラー「FAILED: Execution Error, return code 1」が発生する
【4】エラー「ConsistencyException」が表示

【1】エラー「Cannot inspect org.apache.hadoop.io.IntWritable」が発生する

Parquet ファイル から外部参照テーブルを作成したが、
テーブルを表示する際に以下のエラーが表示されて、データが表示できない

エラー内容

[Amazon][HiveJDBCDriver](500312) Error in fetching data rows:
*org.apache.hive.service.cli.HiveSQLException:java.io.IOException:
org.apache.hadoop.hive.ql.metadata.HiveException:java.lang.UnsupportedOperationException:
Cannot inspect org.apache.hadoop.io.IntWritable:25:24;

原因

Parquet ファイル で定義したデータ型(int型)と
外部参照テーブル で定義したデータ型(string型)で不一致を起こしていた。

補足:調査方法

Parquetファイルをstring型で作り直し、
外部参照テーブル で定義したデータ型(string型)で一致させ
SELECTしてデータを表示させる。
 ⇒ 今回の場合、データが不正な形で格納されていた

解決案

* データが正しい形になるようにParquetファイルを作成しなおし、
 データ型も外部テーブルと一致させるように修正

【2】エラー「java.lang.NoClassDefFoundError: scala/collection/Iterable」が発生する

ある環境で動いていたHivQLを実行したら、以下の「エラー内容」が発生した

エラー内容

その1

Exception in thread "main" java.lang.NoClassDefFoundError: scala/collection/Iterable
 ・・・
Caused by: java.lang.ClassNotFoundException: scala.collection.Iterable
 ・・・

その2:別エラー

[HiveJDBCDriver](500051) ERROR processing query/statement.
Error Code: 1, SQL state: org.apache.hive.service.cli.HiveSQLException:
Error while processing statement:
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tex.TezTask
   at org....
. Query: SQL COUNT(*) FROM ... 

対応案

エンジンを変更した。

今回の場合、以下のようにした。
(各自の状況で、別のエンジンの値に変更する必要がある)

【修正前】

SET hive.execution.engine=spark;

# エラー内容・その2の場合は、未指定。

【修正後】

# MapReduce エンジンを利用する
SET hive.execution.engine=mr;

hive.execution.engine について

以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2020/03/04/225943

【3】エラー「FAILED: Execution Error, return code 1」が発生する

https://dk521123.hatenablog.com/entry/2020/07/16/224332

で扱った
MSCK REPAIR TABLE table_name;
を実行した際に、以下の「エラー内容」が表示された

エラー内容

FAILED: Execution Error, return code 1
 from org.apache.hadoop.hive.ql.exec.DDLTask
/mnt/var/.../xxx.hql maximum number of executions has been reached.
run query fail.
command exiting with ret '1'

解決案

# 今回、たまたまだったかもしれないが、
* 不要なファイル「xxxxx_$folder$」を削除する

別解
https://stackoverflow.com/questions/23333075/hive-execution-error-return-code-1-from-org-apache-hadoop-hive-ql-exec-ddltask

# 試してないけど、、、
~~~~
set hive.msck.path.validation=ignore;
MSCK REPAIR TABLE table_name;
~~~~

* hive.msck.path.validation の詳細は、以下の関連記事を参照のこと。

Hive / HiveQL ~ パーティション / あれこれ編 ~
https://dk521123.hatenablog.com/entry/2020/09/18/113637

【4】エラー「ConsistencyException」が表示

 単純なSELECT文を実行した際に、
エラー「ConsistencyException」が表示されてしまった

エラー内容

エラー内容1

[Code: 500312, SQL State: HY000] [Amazon][HiveJDBCDriver] (500312)
Error in fetching data rows:
*org.apache.hive.service.cli.HiveSQLException; java.io.IOException:
com.amazon.ws.emr.hadoop.fs.consistency.exception.ConsistencyException:
eTag in metadata for File '/<s3 bucket>/xxxx/xxxx' does not match eTag from s3!:xx:xx;

エラー内容2

[Code: 500312, SQL State: HY000] [Amazon][HiveJDBCDriver] (500312)
Error in fetching data rows:
*org.apache.hive.service.cli.HiveSQLException; java.io.IOException:
com.amazon.ws.emr.hadoop.fs.consistency.exception.ConsistencyException:
2 items inconsistent (no s3 object for associated metadata item).
First object: /<s3 bucket>/xxxx/xxxx;

対応案

emrfs syncコマンドを実行してみる
~~~~
emrfs sync s3://<対象S3バケット>/<対象パス>
~~~~

emrfs syncコマンドについては、以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2020/11/13/145545
補足:emrfs syncコマンドでダメな場合

以下のサイトだとemrfs syncコマンドだけではだめで、
メタデータを作り直して対応できたらしい。

1) emrfs delete-metadata
2) emrfs create-metadata
3) emrfs sync

http://ritchiekotzen.hatenablog.com/entry/2015/07/30/EMR_%E3%81%A7S3%E3%81%AE%E3%80%8C%E6%95%B4%E5%90%88%E6%80%A7%E3%81%AE%E3%81%82%E3%82%8B%E3%83%93%E3%83%A5%E3%83%BC%E3%80%8D%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC

関連記事

Amazon EMR ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/05/27/175610
Amazon EMR に関するトラブルシューティング
https://dk521123.hatenablog.com/entry/2020/08/05/144724
EMR / DBアクセス に関するトラブルシューティング
https://dk521123.hatenablog.com/entry/2021/06/17/114611
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
テーブルアクセス時に例外「Vertex failed, ... InvalidInputException」が発生する
https://dk521123.hatenablog.com/entry/2021/07/06/120134
Hive / HiveQL ~ 設定プロパティ ~
https://dk521123.hatenablog.com/entry/2020/09/19/152136
Hive / HiveQL ~ パーティション / あれこれ編 ~
https://dk521123.hatenablog.com/entry/2020/09/18/113637