このトピックでは、Hudi を使用する際のよくある問題についてまとめています。
Spark で Hudi をクエリする際の重複データ
-
原因:Hudi は、Spark DataSource API を使用したデータの読み取りをサポートしていません。
-
解決策:Hudi テーブルをクエリする際、
spark.sql.hive.convertMetastoreParquet=falseの設定を行います。
Hive で Hudi をクエリする際の重複データ
-
原因: デフォルトでは、Hive は、テーブルのカスタム
入力フォーマットを使用しないHiveCombineInputFormatを使用します。 -
解決策: Hudi テーブルをクエリする場合は、
set hive.input.format = org.apache.hudi.hadoop.hive.HoodieCombineHiveInputFormatを実行します。
Spark と Hudi を使用する際のパーティションプルーニングの失敗
-
原因:パーティションフィールドにフォワードスラッシュ (
/) が含まれていると、パーティションフィールドの数とパーティションディレクトリのレベル数が一致しなくなることがあります。その結果、Spark はパーティションプルーニングを適用できなくなります。 -
解決策: Spark DataFrame API を使用して Hudi テーブルに書き込む場合、
hoodie.datasource.write.partitionpath.urlencode=true設定を構成します。
Spark で ALTER TABLE を使用する際のエラー:「xxx is only supported with v2 tables」
-
原因: この問題は、Hudi の Spark 向けスキーマエボリューション機能で、[hoodie.schema.on.read.enable] 設定を
trueに設定する必要があるために発生します。 -
解決策:Hudi テーブルで
ALTER TABLE操作を実行する際は、set hoodie.schema.on.read.enable=trueコマンドを実行してください。詳細については、Apache Hudi ドキュメントの SparkSQL Schema Evolution and Syntax Description をご参照ください。