使用 Spark Java 在 Big Query 中写入 Date 数据类型时出现问题

Posted

技术标签:

【中文标题】使用 Spark Java 在 Big Query 中写入 Date 数据类型时出现问题【英文标题】:Issue while writing into Date datatype in Big Query using Spark Java 【发布时间】:2021-01-19 13:33:49 【问题描述】:

我正在尝试通过 Spark 在 BigQuery 中存储日期数据类型列

cast(from_unixtime(eventtime*60) as date)  as createdDate

我也尝试过如下的 to_date,但没有成功

to_date(from_unixtime(eventtime*60))  as createdDate

现在我正在尝试使用 Spark-BigQuery 连接器保存此数据集,它给我一个错误,即字段 createdDate 已将类型从 DATE 更改为 INTEGER。但是当我尝试在 spark 中打印模式时,它正确地说列数据类型是 Date。

 |-- createdDate: date (nullable = false)

不确定为什么在将数据加载到 BigQuery 时失败。 如果我将数据类型从日期更改为时间戳,同样的事情也会起作用。请指教。

【问题讨论】:

【参考方案1】:

解决方法是使用intermediateFormat作为Orc。使用中间格式作为 Avro 它不起作用,并且我们不能使用 parquet(default) 格式,因为我们的表中有数组数据类型,Big Query 创建中间格式,如此处所述。 Save Array<T> in BigQuery using Java

【讨论】:

以上是关于使用 Spark Java 在 Big Query 中写入 Date 数据类型时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

将数据流从 Google Cloud Storage 流式传输到 Big Query

Big Query-如何在 Big Query 中按浏览量、用户每周比较数据

如何使用 POST 请求在 Big Query 中加载数据?

如何使用间隔交叉加入 Big Query?

使用 Python Pycharm 在 Big Query 中查询公共数据集

在 Google Big Query 中使用 bq 命令行执行查询