私は、HiveとBigQueryで外部テーブルを作成しようとしていますが、AvroフォーマットでGoogle Storageに保存されているものと同じデータをSparkで書いています。Spark AVRO with BigQuery
私はハイブを使用してテーブルを作成する場合がありアブロバージョン/パッケージ間の同じ違いはあるが、
をスパーク2.2.0とDataprocクラスタを使用して、スパーク・アブロ4.0.0および2.1.1ハイブだし、 Sparkを使ってファイルを書き、私はHiveでそれらを見ることができます。
BigQueryは異なるため、Hive Avroファイルは読み取ることができますが、Spark Avroファイルは読み取ることができません。
エラー:
The Apache Avro library failed to parse the header with the follwing error: Invalid namespace: .someField
がエラーについて少し検索、問題は、Sparkアブロファイルはハイブ/ BigQueryのアブロファイルは異なっているということです。
私はこれを修正する方法を正確にはわかりませんが、おそらくSparkで異なるAvroパッケージを使用していますが、どのシステムがすべてのシステムと互換性があるかわかりません。また
ハイブに一時テーブルを作成し、別の私は多くのデータを書き込みますinsert into ... select * from ...
を使用して作成し、私は解決策
すべてのヘルプは以下のようになり、この種のを避けたいように私はトリッキーなソリューションを避けたいです感謝。ありがとう
エラーは「無効な名前空間:.someField」です。 ".someField"は正しいフルネームですか? http://avro.apache.org/docs/current/spec.html#names –
これは別の名前ですが、正確にはフィールドの名前の1つです。実際、構造体フィールドの配列の名前です。 Avroバージョン間のスキーマ定義にはいくつかの違いがあるようです。 –