問題タブ [spark-thriftserver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
286 参照

apache-spark - 構造体フィールドを持つ dbt のインクリメンタル モデル

考えられるユースケースについて DBT を評価していますが、1 つの状況を除いてすべて問題ないようです。これは、ソース テーブルに構造体フィールドがある場合です。

を使用しています。Spark Thrift Server connector基になるデータは として保存さparquetS3ます。DBT バージョンは 0.20 です

これは、ソース テーブルの作成文の一部です。そこに構造体フィールドがあることがわかります。

私のモデルは、特定の where 句を使用してそのテーブルに対して選択を実行するだけです。初めて実行すると、正常に動作し、元のテーブルとまったく同じテーブルが作成されますが、構造体フィールドであっても、いくつかの小さな変更が加えられています。

これはシンクテーブルの作成テーブルの一部です

where句に他の値を指定してdbtを再度実行すると、シンクテーブルに別のパーティションが作成されるはずです。クエリのコンパイルは問題ありません

次のエラーが発生します。

構造体の内部フィールドをルートフィールドとして読み書きしようとしているようです。私は他の構造体フィールドでテストしましたが、最初の実行と同じように、構造体が必要なだけです。私が言ったように、それは2回目の実行でのみ起こります。

これは私のモデルのクエリです。非常に単純です

プロパティを構造体からjsonに変換するように選択を変更するとto_json(properties)、期待どおりに機能し、新しいパーティションが生成されます。

DBT の構造体に何か問題がある場合は? 私は何か間違ったことをしていますか?

私はインクリメンタルマテリアライゼーションを使用しており、append と insert_overwrite でテストしましたが、問題はないようです