Python操作odps

2020-02-18  本文已影响0人  张小爷

odps有完整的Python第三方包,我们只需要按照常规的流程操作,中间会有一些需要注意的点,也是我在使用的过程中遇到的一些坑,会单独说明一下

1、安装第三方包

pip install pyodps

from odps import ODPS

主要用到的就是这一个包

odps = ODPS(access_id='access_id',
secret_access_key='secret_access_key',
project='project',
endpoint='endpoint')

然后我们需要配置一下链接,类似链接数据库,这里的access_id 和secret_access_key 是在创建账户的时候就生成了,project是你的项目空间,类似database,最后是endpoint,这里官方没有说明这里填什么,自己摸索之后找到了一个结果“https://service.odps.aliyun.com/api”,填入这个api链接就可以了,接下来就可以就可以进行对表的查询等操作。

2、最基础的查询获取数据

跟操作mysql一样,把一个完整的odps SQL执行一下,就可以得到最终的结果

在前面的文章中我们有写到Python操作mysql发送邮件和钉钉推送,这里odps的数据结果也是同样可以的,只不过会有稍微的一点区别。

odps SQL 得到的数据结果是一个字典

odps.Record {

  A        E

  B        F

  C        G

}

所以要通过key-value的取值方式去获取数字结果

在处理数据结果往Excel里面写入的时候,需要将数据结果处理成dataFrame的格式

接下来就是写入Excel,直接dataFrame to_excel就可以了

3、odps全表扫描在Python中怎么实现

odps很重要的一个点是分区的概念,由于分区的存在会使得查询的时候数据量少很多,查询效率更高,但是有的时候分区的数据满足不了查询,需要全表查询的时候,在odpsSQL执行窗口中可以用这条语句来默认全表扫描,

SET odps.sql.allow.fullscan=true;

但是在Python中,如果这条语句直接放在SQL中,则执行的时候会报错,我们可以通过以下办法来解决

from odps import options

导入这个包

options.sql.settings = {"odps.sql.submit.mode": "script"}

设置一下模式,这样就可以了

以上的操作可以完成Python操作odps获取数据,同时结合前两篇文章的思路可以完成odps 数据的钉钉推送和邮件发送,一般公司数据量大了之后都会使用一些大数据的工具,这里只讨论odps,其他的比如hive由于没有接触,所以不做分享,等有机会接触了再做说明

官方操作文档:https://help.aliyun.com/document_detail/34615.html

上一篇下一篇

猜你喜欢

热点阅读