このトピックでは、Hudiに関するよくある質問への回答を提供します。
Sparkを使用してHudiテーブルのデータをクエリすると重複データが返される場合の対処方法
原因:SparkのデータソースAPIを使用してHudiデータを読み取ることは許可されていません。
解決策:Hudiテーブルのデータをクエリするために使用するコマンドに
spark.sql.hive.convertMetastoreParquet=falseを追加します。
Hiveを使用してHudiテーブルのデータをクエリすると重複データが返される場合の対処方法
原因:デフォルトでは、HiveはHiveCombineInputFormatを使用します。ただし、この入力形式クラスを使用して、テーブル用にカスタマイズされた
input formatを呼び出すことはできません。解決策:Hudiテーブルのデータをクエリするために使用するコマンドに
set hive.input.format = org.apache.hudi.hadoop.hive.HoodieCombineHiveInputFormatを追加します。
Sparkを使用してHudiテーブルのデータをクエリするとパーティションプルーニングが有効にならない場合の対処方法
原因:パーティションフィールドの名前にスラッシュ(/)が含まれている場合、クエリ中に検出されたパーティションフィールドの数が実際のパーティションレベルの数と一致しません。その結果、パーティションプルーニングは有効になりません。
解決策:SparkのDataFrame APIを使用してHudiテーブルにデータを書き込むために使用するコマンドに
hoodie.datasource.write.partitionpath.urlencode= trueを追加します。
SparkでALTER TABLEステートメントを実行すると「xxx is only supported with v2 tables」というエラーメッセージが表示される場合の対処方法
原因:Hudi-Sparkスキーマ進化機能を使用する場合、Hudiの hoodie.schema.on.read.enable 設定項目がtrueに設定されていません。
解決策:Hudiテーブルに対して実行される
ALTER TABLEステートメントにset hoodie.schema.on.read.enable=trueを追加します。詳細については、Apache Hudiの SparkSQL Schema Evolution and Syntax Description をご参照ください。