我们编写了一个Google数据流代码,可以将值插入到bigquery中 列的类型为DateTime。 逻辑在大多数时候运行良好。 但突然间我们得到了无效的DateTime问题。
Exception: java.lang.RuntimeException: java.io.IOException: Insert failed: [{"errors":[{"debugInfo":"generic::out_of_range: Invalid datetime string \"2017-09-26T21:16\"
目前尚不清楚上述值如何以及为何无效。 我们看到它遵守https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types
中提到的DateTime数据类型另外还不清楚为什么它只是偶尔抛出这个错误。
我们编写了一个扩展DoFn的自定义转换代码 ProcessElement代码就像这样
public void processElement(ProcessContext c) throws Exception {
TableRow tableRow = c.element();
try {
// do some processing then
tableRow.set("PredictedDate",**LocalDateTime.now().toString()**);
c.output(tableRow);
}catch(Exception exc){
LOG.error("Exception while processing and hence not attempting to write to bigquery");
}
}
enter code here
它工作正常但偶尔会在夜间失败(美国中部时区)。 能帮我们找到根本原因吗。
答案 0 :(得分:4)
答案 1 :(得分:0)
就我而言,我正在获取时间戳中的时间并将其转换为字符串:
new Date(event_timestamp_ms).toISOString().slice(0, -1);
由于DATETIME不包含有关时区的信息,因此有助于从UTC格式中删除Z符号。