导入BigQuery时 - 遇到JSON表

时间:2017-02-16 20:03:19

标签: mysql google-bigquery

我正在使用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;

我无法理解这一张桌子造成了什么问题。

1 个答案:

答案 0 :(得分:0)

问题解决了 - 正在发送的JSON表描述与表示发送数据的JSON之间存在不匹配。这是通过PR解决的:

https://github.com/appsflyer-dev/spark-bigquery/pull/8

代码创建了一个包含text类型列的表,但Spark JSONizer将数据编码为数字。 BigQuery的表导入失败,发布错误。一个更好的错误会很好。