問題タブ [aws-glue-data-catalog]

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 に答える
1764 参照

amazon-web-services - 二重引用符内でコンマを分割し、データカタログを壊した AWS クローラーの問題を修正する方法は?

スケジュールで実行される新しいクローラーを設定していますが、内部にコンマが含まれる二重引用符で失敗します

テーブルの詳細を編集するために OpenCSVSerDe lib が使用されていることを検索して見つけましたが、新しいテーブルを作成していて、クローラーがデータ カタログを正しく生成できるようにする設定を追加する方法を知りたいです。

csvファイル"$3.62","4,406"にデータカタログのような値がある場合

しかし、私は得ています:

0 投票する
2 に答える
9746 参照

amazon-athena - この HIVE_PARTITION_SCHEMA_MISMATCH を解決するにはどうすればよいですか?

S3 の CSV ファイルに分割されたデータがあります。

  • s3://bucket/dataset/p=1/*.csv (パーティション #1)
  • ...
  • s3://bucket/dataset/p=100/*.csv (パーティション #100)

s3://bucket/dataset/ で分類子を実行すると、150 列 (c1、...、c150) が検出され、さまざまなデータ型が割り当てられるため、結果は非常に有望に見えます。

結果のテーブルを Athena にロードしてクエリ ( select * from dataset limit 10) を実行すると、次のエラー メッセージが表示されます。

HIVE_PARTITION_SCHEMA_MISMATCH: テーブルとパーティションのスキーマが一致しません。タイプは互換性がなく、強制できません。テーブル 'tests.dataset' の列 'c100' は型 'string' として宣言されていますが、パーティション 'AANtbd7L1ajIwMTkwOQ' は列 'c100' を型 'boolean' として宣言しています。

まず第一に、「AANtbd7L1ajIwMTkwOQ」の使用方法がわかりません...しかし、Glue のパーティションのリストから、c100 が文字列として分類されているパーティションとブール値として分類されているパーティションがあることがわかります。テーブルスキーマはそれを文字列としてリストしていますが。

これは、c100 をテーブル スキーマに一致する文字列として分類するパーティションにクエリを制限すると、クエリが機能することも意味します。c100 をブール値として分類するパーティションを使用すると、クエリは上記のエラー メッセージで失敗します。

いくつかの CSV 列 c100 を見ると、3 つの異なる値が含まれているようです。

  • 真実
  • 間違い
  • [空] (...、、...のように)

おそらく一部の行にタイプミスが含まれている可能性があり (おそらく)、一部のパーティションは文字列として分類されますが、これは単なる理論であり、ファイルの数とサイズのために検証が困難です。

私もMSCK REPAIR TABLE dataset無駄に努力しました。

これに対する迅速な解決策はありますか?たぶん、すべてのパーティションに文字列を使用するように強制しますか? パーティションのリストを見ると、無効になっている「スキーマの編集」ボタンがあります。

または、すべての行をチェックして破棄または修復する Glue ジョブを作成する必要がありますか?