【发布时间】:2017-12-14 16:55:30
【问题描述】:
我正在使用 Bigquery 解释器在 zeppelin 上运行 Bigquery 查询,查询是在具有类型为 TIMESTAMP 的字段的表上运行的。
行为: 1. 在 google bigquery 控制台上执行查询时,TIMESTAMP 字段被视为日期,这是有效的默认行为,因为它是人类可读的。它也与任何 SQL 数据库相同。 2. 当使用 bigquery 解释器在 zeppelin 上执行相同的查询时,TIMESTAMP 字段将呈现为 LONG 类型..即一个巨大的数字。 但是在 zeppelin 上,当使用 JDBC 解释器执行查询时,TI
我们希望 Timestamp 列在执行选择查询时呈现为日期。
当我在 zeppelin 源的 BigQueryInterpreter.java 中添加日志时,字段值打印为长类型,即大数字。所以如果我们想解决这个问题,什么是正确的方法,因为 zeppelin 解释器使用 bigquery google api 服务,即 google-api-services-bigquery-v2-rev300-1.20.0
for (TableRow 行: response.getRows()) { for (TableCell 字段 : row.getF()) { logger.error("字段值:{}",field.getV().toString()); msg.append(field.getV().toString()); msg.append(TAB); }
Timestamp field rendered as number
SQl, timestamp rendered as date
那么我们如何确保 bigquery 返回 timstamp 作为日期而不是长类型,如何解决这个问题?
【问题讨论】:
-
这个问题只发生在 Zeppelin Interpreter 上?为什么不能在拉取数据后简单地将 Long 值重新转换回 Timestamp?