我试图在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版本之间的架构定义有些不同。 –