我正在使用Spark将一组表从Mysql同步到BigQuery中,并使用由AppFlyer(https://github.com/appsflyer-dev/spark-bigquery)的人创建的简单包装库。这个方法就像我的所有表格的魅力一样。导入该表时,我从BigQuery返回以下错误:
线程“main”中的异常java.io.IOException:JSON表遇到太多错误,放弃了。行数:1;错误:1。 在 com.google.cloud.hadoop.io.bigquery.BigQueryUtils.waitForJobCompletion(BigQueryUtils.java:95) 在 com.appsflyer.spark.bigquery.BigQueryClient.com $ appsflyer $火花$ $的BigQuery $$ BigQueryClient waitForJob(BigQueryClient.scala:129) 在 com.appsflyer.spark.bigquery.BigQueryClient.load(BigQueryClient.scala:100)
Mysql端的表架构如下所示:
CREATE TABLE mytable (
id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
field1_id int(11) NOT NULL,
created_at datetime(6) DEFAULT NULL,
updated_at datetime(6) DEFAULT NULL,
field2_id int(11) NOT NULL,
hidden_at datetime(6) DEFAULT NULL,
deleted_at datetime(6) DEFAULT NULL,
field3 tinyint(4) NOT NULL,
field4 tinyint(1) DEFAULT '1',
PRIMARY KEY (id),
) ENGINE=InnoDB AUTO_INCREMENT=10193389 DEFAULT CHARSET=utf8mb4;
我无法理解这一张桌子造成了什么问题。
答案 0 :(得分:0)
问题解决了 - 正在发送的JSON表描述与表示发送数据的JSON之间存在不匹配。这是通过PR解决的:
https://github.com/appsflyer-dev/spark-bigquery/pull/8
代码创建了一个包含text类型列的表,但Spark JSONizer将数据编码为数字。 BigQuery的表导入失败,发布错误。一个更好的错误会很好。