Spark与AVI兼容BigQuery

我试图在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 ...我会写很多数据的创建,我想避免这种解决方案

任何帮助将是赞赏。谢谢

回答:

错误消息由BigQuery使用的C++ Avro库抛出。 Hive可能使用Java Avro库。 C++库不喜欢以“。”开头的命名空间。

这是从库中的代码:

if (! ns_.empty() && (ns_[0] == '.' || ns_[ns_.size() - 1] == '.' || std::find_if(ns_.begin(), ns_.end(), invalidChar1) != ns_.end())) { 

throw Exception("Invalid namespace: " + ns_);

}

回答:

想知道如果你找到了答案。

我看到了同样的事情,我试图将数据加载到bigquery表中。库首先将数据以avro格式加载到GCS中。该模式也有一个结构数组,并且命名空间存在一个.

以上是 Spark与AVI兼容BigQuery 的全部内容, 来源链接: utcz.com/qa/262206.html

回到顶部