繁体   English   中英

BigQuery 中的 DateTime 数据类型

[英]DateTime datatype in BigQuery

我有一个分区表,其中一列的类型为 DateTime,并且该表在同一列上分区。 根据spark-bigquery文档,对应的Spark SQL类型是String类型。 https://github.com/GoogleCloudDataproc/spark-bigquery-connector

我尝试做同样的事情,但我遇到了数据类型不匹配的问题。

代码片段:

ZonedDateTime nowPST = ZonedDateTime.ofInstant(Instant.now(), TimeZone.getTimeZone("PST").toZoneId());
        df = df.withColumn("createdDate", lit(nowPST.toLocalDateTime().toString()));

错误:

Caused by: com.google.cloud.spark.bigquery.repackaged.com.google.cloud.bigquery.BigQueryException: Failed to load to <PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME> in job JobId{project=<PROJECT_ID>, job=<JOB_ID>, location=US}. BigQuery error was Provided Schema does not match Table <PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>. Field createdDate has changed type from DATETIME to STRING
        at com.google.cloud.spark.bigquery.BigQueryWriteHelper.loadDataToBigQuery(BigQueryWriteHelper.scala:156)
        at com.google.cloud.spark.bigquery.BigQueryWriteHelper.writeDataFrameToBigQuery(BigQueryWriteHelper.scala:89)
        ... 36 more

由于 Spark 不支持DateTime ,BigQuery 连接器不支持写入DateTime - 没有可以使用的等效 Spark 数据类型。 我们正在探索增加 DataFrame 元数据的方法,以支持 BigQuery 支持的类型,而不是 Spark 支持的类型( DateTimeTimeGeography )。

目前请将此字段设为字符串,并在 BigQuery 端进行转换。

我现在也遇到了这个问题https://community.databricks.com/s/question/0D58Y000099mPyDSAU/does-databricks-support-writing-geographygeometry-data-into-bigquery

对于日期时间类型。 我可以将表从数据块获取到 BigQuery 的唯一方法(无需创建临时表并插入数据,因为由于表的大小,这仍然会很昂贵)是将表写入 CSV 到 GCS Bucket

results_df.write.format("csv").mode("overwrite").save("gs://<bucket-name>/ancillary_test")

然后将数据从存储桶加载到指定架构的 BigQuery 中的表

LOAD DATA INTO <dataset>.<tablename>(
    PRICENODEID INTEGER,
    ISONAME STRING,
    PRICENODENAME STRING,
    MARKETTYPE STRING,
    GMTDATETIME TIMESTAMP,
    TIMEZONE STRING,
    LOCALDATETIME DATETIME,
    ANCILLARY STRING,
    PRICE FLOAT64,
    CHANGE_DATE TIMESTAMP
)
FROM FILES (
  format = 'CSV',
  uris = ['gs://<bucket-name>/ancillary_test/*.csv']
    );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM