美文网首页
Python操作odps

Python操作odps

作者: 张小爷 | 来源:发表于2020-02-18 20:05 被阅读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

    相关文章

      网友评论

          本文标题:Python操作odps

          本文链接:https://www.haomeiwen.com/subject/cksnfhtx.html