从 cron 作业运行 pandas.io.gbq

Posted

技术标签:

【中文标题】从 cron 作业运行 pandas.io.gbq【英文标题】:Running pandas.io.gbq from a cron job 【发布时间】:2017-03-07 11:16:55 【问题描述】:

我已经编写了一个脚本来查询本地 API 和 Google BigQuery,我在其中使用 pandas.io.gbq 将查询传递给 BigQuery 并将它们返回给 pandas 数据帧。例如。

   raw_page_id_date  = gbq.read_gbq(query, project_id=project_id, dialect='standard')

   gbq.to_gbq(raw_page_id_date, destination_table='ohalloranb.raw_page_id_date', project_id='tmg-data-science-dev', verbose=True, reauth=False, if_exists='replace', private_key=None)

当我从命令行运行该脚本时,它可以正常运行 - 它查询 API 和 BigQuery 并按预期转储输出。但是,当我尝试将其作为 cron 作业运行时,我遇到了问题。第一部分 - 查询本地 API 运行没有问题。但是,它在遇到 BigQuery 查询时崩溃了:

   raw_page_id_date  = gbq.read_gbq(query, project_id=project_id, dialect='standard')

   TypeError: read_gbq() got an unexpected keyword argument 'dialect'

这是身份验证问题,还是其他问题?

【问题讨论】:

【参考方案1】:

听起来 cron 作业使用的 pandas 版本与您在命令行中使用的版本不同。 read_gbqdialect 选项是 added in version 0.19.0。您可能想尝试让您的 cron 作业打印版本号,并且 - 如果它小于 0.19.0 - 将作业更改为使用更新的版本。

【讨论】:

确实是问题所在:cron 在我的机器上使用的是 Python 的基本安装,而不是带有升级版 pandas 的版本。面对面的时刻,但现在一切正常。

以上是关于从 cron 作业运行 pandas.io.gbq的主要内容,如果未能解决你的问题,请参考以下文章

每分钟运行一次 cron 作业,但从特定时间开始

从 Cron 作业登录 SQL

如何让运行 Node.js 脚本的 cron 作业从 .env 文件中读取变量?

cron 作业运行 url cpanel

从 root 帐户执行 cron 作业是不是安全?

CRON 作业不断出错