繁体   English   中英

如何将Appengine与来自API的Python脚本流数据一起使用,将数据流传输到Google Cloud BigQuery?

[英]How to stream data into Google Cloud BigQuery using Appengine with Python Script-flowing data from API?

我一直试图从下面的api中流式传输数据,但收效甚微。

https://dev.socrata.com/foundry/data.cityofchicago.org/8v9j-bter

  • 使用Shell脚本自动化Datalab笔记本太困难了
  • 运用气流来协调也是如此
  • 以下代码可在datalab笔记本中使用,但不知道“ Context”魔术命令是否可在常规脚本中使用。
  • 在appengine中甚至有可能吗?
  • 有人可以提供其他有关该脚本正常运行所必需的脚本的指导吗?
  • 代码缩进可能已关闭

main.py脚本

       #install main packages
      !pip install sodapy
     import pandas as pd
     from sodapy import Socrata
     from google.datalab import Context

     #put into dataframe
     client = Socrata("data.cityofchicago.org", None)
     results = client.get("8v9j-bter", limit=2000)
     results_df = pd.DataFrame.from_records(results)

     #flow into BigQuery
     results_df.to_gbq('chicago_traffic.demo_data', Context.default().project_id,
                   chunksize=2000, verbose=True, if_exists='append')

App.yaml脚本

     runtime: python27
      api_version: 1
     threadsafe: true

      handlers:
      - url: /.*
       script: main.app

cron.yaml脚本

  cron:
     - description: "append traffic data"
      url: /.*
      target: main
      schedule: every 1 mins 
  retry_parameters:
     min_backoff_seconds: 2.5
     max_doublings: 5

requirements.txt

   pandas==0.22.0
   sodapy==1.4.6
   datalab==1.1.2
   google-api-python-client

使用app.yaml时,您将在App Engine标准环境中进行部署。 使用标准环境时,可以通过将任何内置的第三方库添加到app.yaml文件中来使用它们,也可以按照此链接中的步骤使用任何其他第三方库。

这里的问题是,正如我之前分享的链接中所述:

您可以使用不含C扩展名的纯Python代码的第三方库,

pandas库的部分代码用C编写( https://pandas.pydata.org/#library-highlights 如何解决pandas的导入错误? ),因此,要使用Pandas,您需要使用App Engine灵活的环境

您需要对文件进行一些修改才能运行部署。 单击以下链接可以使文件适应灵活的环境:

!pip install sodapy使用了魔术命令!, 这是某些笔记本电脑环境中专有的命令。 您不能将该行添加到main.py文件中。 此操作(pip install sodapy)将在应用程序部署期间运行,因为您将sodapy == 1.4.6添加到了requirements.txt文件中。

不必添加Context.default()。project_id,您应该能够仅将project_id添加为str。 在App Engine Flex中运行时,授权不应该成为问题。 如果要在本地运行,请记住使用具有正确权限的服务帐户

暂无
暂无

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

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