簡體   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