スパークとハイブの新機能です。いずれかが私のために、より良い、それは意志の例で声明を説明する場合、私は、「寄木でNULL値を許可するかどうかが重要である一方、ハイブは、すべての列がNULL可能と考える」テーブルスキーマ処理の観点から、HiveとParquetのSPARK-HIVEキーの相違点
を文を理解していません。ありがとうございます。
スパークとハイブの新機能です。いずれかが私のために、より良い、それは意志の例で声明を説明する場合、私は、「寄木でNULL値を許可するかどうかが重要である一方、ハイブは、すべての列がNULL可能と考える」テーブルスキーマ処理の観点から、HiveとParquetのSPARK-HIVEキーの相違点
を文を理解していません。ありがとうございます。
、あなたがテーブルを作成するとき、あなたは特定の列がNullを更新/挿入しようとしてすなわち(か(つまりNULL値を含んでいてもよい)「NULL可能」であることを述べることができます値はエラーをスローする)。
Nullがデフォルトです。
寄木細工のスキーマ構文は、同じ概念をサポートしていますが、AVROシリアル化を使用するときは、デフォルトではnullが使用できません。
警告 - Sparkを使用して複数のParquetファイルを読み取る場合、これらのファイルには異なるスキーマが含まれている可能性があります。スキーマ定義が時間とともに変化し、新しいファイルの最後に2つのNullable列があるとします。次に、スキーマがすべてのファイル(無作為に1つだけではない)からスキーマを読み込むように、「スキーマのマージ」を要求する必要があります。これらのスキーマがすべて互換性があることを確認してください。古いファイルの場合はNULLです。
ハイブHQL構文は、標準のSQL機能をサポートしていません。 Hiveはデータファイルを完全に制御できないため、すべての列がnull許容である必要があります。
想像して2つのパーティションを持つハイブパーティション表...
Parquetベースのパーティションの場合、Hiveは "スキーママージ"を行いますが、Sparkのようにファイルスキーマをマージする代わりに、各ファイルスキーマをテーブルスキーマとマージします。ファイルに含まれていないすべてのテーブル列をNULLにデフォルト設定します。
CSVベースのパーティションの場合、CSVファイルには「スキーマ」がないため、テーブルの列に順番にマッピングされる値の一覧があるため、残念です。 EOLに達すると、欠落している列はすべてNULLに設定されます。最後の列の値に達すると、行の余分な値は無視されます。
ご協力いただきありがとうございます。 – Rakib