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