我試圖在Hive中創建一個外部表,並使用存儲在Avro格式的Google存儲中的相同數據在BigQuery中創建另一個表。Spark與AVI兼容BigQuery
我使用的是Dataproc集羣星火2.2.0,星火的Avro 4.0.0和2.1.1蜂房
有Avro的版本/包之間的差異一樣,但如果我創建使用蜂巢表和然後我使用Spark編寫文件,我可以在Hive中看到它們。
但是對於BigQuery是不同的,它能夠讀取Hive Avro文件而不是Spark Avro文件。
錯誤:
The Apache Avro library failed to parse the header with the follwing error: Invalid namespace: .someField
搜索一些關於錯誤,問題是,星火Avro的文件是從蜂巢/ BigQuery的Avro的文件不同。
我不知道如何解決這個問題,也許在Spark中使用不同的Avro包,但我還沒有找到哪一個與所有系統兼容。
我也想避免棘手的解決方案,如創建蜂巢臨時表和另一個使用insert into ... select * from ...
我會寫很多數據的創建,我想避免這種解決方案
任何幫助將是讚賞。謝謝
錯誤是「Invalid namespace:.someField」。 「.someField」是正確的全名嗎? http://avro.apache.org/docs/current/spec.html#names –
這是另一個名字,但它正是其中一個字段的名稱。實際上,是一個Struct的字段數組的名稱。似乎Avro版本之間的架構定義有些不同。 –