【问题标题】:Load Pandas DF to Big Query fails将 Pandas DF 加载到 Big Query 失败
【发布时间】:2019-06-01 23:15:24
【问题描述】:

我正在使用以下代码(基于示例 pandas-gbq-migration) 如下:

from google.cloud import bigquery
import pandas
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "link_to_credentials.json"

df = pandas.DataFrame(
    {
        'my_string': ['a', 'b', 'c'],
        'my_int64': [1, 2, 3],
        'my_float64': [4.0, 5.0, 6.0],
    }
)
client = bigquery.Client()
dataset_ref = client.dataset('TMP')
table_ref = dataset_ref.table('yosh_try_uload_from_client')

client.load_table_from_dataframe(df, table_ref).result()

我收到以下错误:

ImportError: Unable to find a usable engine; tried using: 'pyarrow', 'fastparquet'.
pyarrow or fastparquet is required for parquet support 

看了一些类似这样的问题后:

google-cloud-bigquery-load-table-from-dataframe-parquet-attributeerror : https://cloud.google.com/bigquery/docs/pandas-gbq-migration

我了解我需要更改配置中的某些内容(也许添加架构?)

有人可以在这里帮助我吗,我无法从文档中理解如何做到这一点。

提前致谢!

【问题讨论】:

    标签: python pandas google-bigquery


    【解决方案1】:

    您需要安装pyarrowdocs 表示,除非您有镶木地板引擎,否则将引发ImportError)。 load_table_from_dataframe 方法将数据帧写入 parquet,并在加载作业中将源格式设置为 parquet。我不太确定为什么会做出这个选择,但它是硬编码的,安装pyarrow 比使用不同格式自己实现更简单、更安全。

    【讨论】:

    • 谢谢,那个导入让我发现了另一个错误:“提供的架构与表不匹配....'''。无法添加字段:(
    • 这表明 yosh_try_uload_from_client 的架构与您使用数据框指示的架构不同。您可以将job_config 传递给load_table_from_dataframe,包括架构和WRITE_TRUNCATEwrite_disposition(默认为WRITE_APPEND)。更多信息请查看here
    • 是的,你又是对的,我也解决了这个问题,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-01-25
    • 2019-03-01
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    相关资源
    最近更新 更多