2017-11-23 5 views

答えて

0

はい、これは異なる外部表の組み合わせによって実現できます。

異なるファイルの列を読み込む方法が異なるさまざまなSerDesが必要になるため、ファイル(および表)の種類ごとに1つの外部表を作成する必要があります。これらの外部表のそれぞれからのデータは、Rameshによって提案されたように、UNIONでビューに結合できます。ビューは、これらから読み込むために使用することができます。管理対象テーブルにデータを挿入します。

1

ハイブは、1つのテーブルのすべてのファイルが同じデリミタ、同じ圧縮が適用されると期待しています。したがって、複数のフォーマットのファイルの上にハイブテーブルを使用することはできません。あなたが使用することをお勧めします

ソリューションは

  • で別のテーブルを作成します(JSON/XML/CSV)ファイル形式
  • のそれぞれについて、上記で作成した3つのテーブルのUNIONのビューを作成します。 。

このようにして、データの消費者は、それが探しているものであれば、1つのビュー/オブジェクトのみをクエリする必要があります。

+0

誤っています。 'Parquet'として保存されたパーティションテーブルを作成し、' alter table'を作成してデフォルトをCSVに変更します(既存のパーティションに変更をカスケードせずに)。次に新しいパーティションを作成します。しかし、私はそれが非常に、非常に汚れたハックだと認めます。 –

+0

また、圧縮オプションは動的に管理されます。同じフォルダに '.csv'ファイルと' .csv.gz'ファイルがある場合、それぞれのタイプは適切な圧縮コーデックで読み込まれます。 –

関連する問題