使用 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 中加载数据?