PyODPS DataFrame:统一的数据查询语言

摘要: 前几天,PyODPS发布了0.7版本,这篇文章给大家介绍下PyODPS新版本带来的重要特性。 之前也有若干篇文章介绍过了,我们PyODPS DataFrame是延迟执行的,在调用立即执行的方法,比如execute、persist等之前,都只是构建了表达式。

点此查看原文:http://click.aliyun.com/m/41051/

前几天,PyODPS发布了0.7版本,这篇文章给大家介绍下PyODPS新版本带来的重要特性。

之前也有若干篇文章介绍过了,我们PyODPS DataFrame是延迟执行的,在调用立即执行的方法,比如execute、persist等之前,都只是构建了表达式。而真正的执行根据具体的输入数据,来决定执行的后端。

比如,我们可以根据输入是pandas DataFrame(本地数据),还是MaxCompute Table(MaxCompute数据)来决定是在本地执行,还是在MaxComput上执行。

In [1]: import pandas as pdIn [2]: pd_df = pd.DataFrame({'a': range(3)})In [3]: from odps.df import DataFrameIn [4]: df = DataFrame(pd_df)  # 本地数据In [5]: df.a.sum()
|==========================================|   1 /  1  (100.00%)         0s
3In [6]: %load_ext odpsIn [7]: %enter
Out[7]: <odps.inter.Room at 0x105951990>In [8]: df = DataFrame(o.get_table('pyodps_iris'))  # MaxCompute数据In [9]: df.sepal_width.sum()
|==========================================|   1 /  1  (100.00%)        15s
458.10000000000014

数据库执行

来到了0.7版本,我们的后端武器库进一步扩充,现在我们支持Postgresql和MySQL,原则上我们支持所有的主流数据库,但我们只在这两个数据库上做了测试。

我们的数据库执行后端使用 sqlalchemy 实现,想要执行还需要对应数据库的driver。

现在,如果DataFrame输入的数据是sqlalchemy Table,那么我们就可以使用数据库后端来执行。

In [24]: mysql_engine = sqlalchemy.create_engine('mysql://root:123@localhost/movielens') In [25]: metadata = sqlalchemy.MetaData(bind=mysql_engine)   # 需要绑定engineIn [26]: table = sqlalchemy.Table('top_users', metadata, extend_existing=True, autoload=True)In [27]: top_users = DataFrame(table)In [28]: top_users.age.sum()
|==========================================|   1 /  1  (100.00%)         0s
763

对于postgresql也是一样。 值得注意的是,现在还有部分DataFrame操作,比如自定义函数尚未支持数据库后端

可以看到,PyODPS DataFrame就是一个统一的数据查询语言,用户不需要改写一行代码,就可以根据输入让数据在MaxCompute、本地和数据库上执行,由于DataFrame框架的灵活性,我们甚至还可以扩展出非SQL执行后端的支持。

JOIN或者UNION数据库和MaxCompute数据

过去 一篇文章 提到过,我们可以join或者union本地和MaxCompute上的数据,这样的典型场景就是,比如我有个本地excel文件,我可以轻松读取成本地DataFrame,然后直接就可以和MaxCompute数据进行操作,省去了一大堆麻烦的过程。

现在,我们也同样可以join 数据库和MaxCompute上的数据,试想,有一堆用户数据是在数据库中进行处理,然后我们无需经过同步数据等繁琐的过程,我们就可以直接join 数据库和MaxCompute上的数据,这是何其方便的事情。

比如:

In [29]: ratings = o.get_table('movielens_ratings').to_df()In [32]: female_top_users = top_users[top_users.sex == 'F']  # MySQL中的数据In [33]: ratings.join(female_top_users).rating.mean()
|==========================================|   1 /  1  (100.00%)        14s
2.9451170298627924

总结

我们PyODPS一直处在快速迭代的过程中,我们所有所做的努力,都是为了让大家以更好的体验来进行数据分析和机器学习。尽管我们很努力,但精力毕竟有限,难免会有bug,会有功能不完善。希望大家能给我们提issue,能贡献代码就更好啦。

项目文档:http://pyodps.readthedocs.io
项目地址:https://github.com/aliyun/aliyun-odps-python-sdk
提issue:https://github.com/aliyun/aliyun-odps-python-sdk/issues

钉钉扫码:
图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flowable理论(三)flowable简介

flowable 2017发布&#xff0c;主创人员来自Activiti团队&#xff0c;目前支持BPMN和CMMN、DMN规范、它的主要含有五个引擎和一个官方自带的Modeler流程设计器&#xff0c;以及一套数据库表&#xff0c;以及发布版本&#xff08;5个war)/源代码等&#xff1a; 文章目录一、五大…

AliOS Things 持续集成(CI)系统介绍

摘要&#xff1a; AliOS Things在快速的迭代进化之中&#xff0c;如何保证提交的代码质量&#xff0c;并保证在各个硬件平台上的稳定性&#xff0c;是一个非常大的挑战。同时物联网硬件碎片化&#xff0c;资源紧张&#xff0c;对持续集成&#xff08;CI&#xff09;系统也提出了…

从青铜到王者,助力企业轻松上云的四大绝招!

戳蓝字“CSDN云计算”关注我们哦!IBM在7月份发生了很多大事&#xff0c;其中这两件你知道吗&#xff1f;第一&#xff0c;IBM&#xff08;NYSE: IBM&#xff09;与美国电话电报公司&#xff08;AT&T&#xff09;&#xff08;NYSE: T&#xff09;达成一项为期多年的战略联盟…

python模块用法教程_Python学习之asyncore模块用法实例教程

本文以实例分析了Python中asyncore模块的原理及用法&#xff0c;分享给大家供大家参考。具体分析如下&#xff1a;asyncore库是python的一个标准库&#xff0c;它是一个异步socket的包装。我们操作网络的时候可以直接使用socket等底层的库&#xff0c;但是asyncore使得我们可以…

PyODPS开发中的最佳实践

摘要&#xff1a; PyODPS支持用 Python 来对 MaxCompute 对象进行操作&#xff0c;它提供了 DataFrame API 来用类似 pandas 的接口进行大规模数据分析以及预处理&#xff0c;并且可以用 ml 模块来执行机器学习算法。 点此查看原文&#xff1a;http://click.aliyun.com/m/41091…

flowable实战(一)flowable与spring boot集成

文章目录一、添加依赖pom.xml二、关掉认证和Mapper接口的扫描三、添加数据库连接池一、添加依赖pom.xml <dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter</artifactId><version>${flowable.version…

PyODPS 中使用 Python UDF

摘要&#xff1a; PyODPS 中使用 Python UDF 包含两方面&#xff0c;一个是直接使用&#xff0c;也就是在 MaxCompute SQL 中使用&#xff1b;一个是间接的方式&#xff0c;也就是 PyODPS DataFrame&#xff0c;这种方式你不需要直接写 Python UDF&#xff0c;而是写普通的 Pyt…

无服务器计算,如何节省时间和成本?

戳蓝字“CSDN云计算”关注我们哦&#xff01;译者 | 风车云马出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcould&#xff09;为了解决面临的业务问题&#xff0c;通常需要开发人员花费一定的时间编写完代码&#xff0c;再交由运维工程师确保正常的运行&#xff0c;整个过程…

gen文件下有两个R.java_android工程gen目录中R.java包名是怎么确定

新建一个工程&#xff0c;包名用的com.mythroad.adskiller, 后来觉得不好&#xff0c;又改成com.mythroad.adsinscepter,但是我发现gen下的R.java文件的包名还是原来的com.mythroad.adskiller。甚至手动新建了R.java,包名为com.mythroad.adsinscepter&#xff0c;我把com.mythr…

flowable实战(二)flowable流程模型管理接口

文章目录一、流程模型资源二、流程模型资源的部署&#xff1a;2.1. 流程资源xml部署&#xff1a;2.2. zip/bar打包&#xff0c;多个流程资源文件部署&#xff1a;2.3. Model部署三、部署有关的数据库表四、流程模型的常见管理接口4.1. 部署api4.2.验证部署4.3.获取所有部署api4…

玩转CocoaPods

摘要&#xff1a; 作者&#xff1a;阿里-移动云-大前端 CocoaPods作为iOS的依赖管理工具&#xff0c;已然成为iOS开发的标准工具&#xff08;官方给出的数据&#xff0c;超过42W个库和300W个App使用了CocoaPods&#xff09;。 本篇文章&#xff0c;非讲述CocoaPods的教学文章&a…

一张图看懂阿里云新发布的物联网设备上云神器——HiTSDB + IoT套件

近日&#xff0c;阿里云针对物联网企业遇到的设备认证困难、安全问题突出等问题&#xff0c;发布了HiTSDB IoT 套件的一体化解决方案&#xff0c;能够支持物联设备快速上云&#xff0c;高效设备管理&#xff0c;数据安全&#xff0c;低成本海量数据存储&#xff0c;实时掌握设备…

flowable实战(三)flowable流程实例管理接口

文章目录一、流程实例的管理接口常见功能&#xff1a;1.启动一个流程&#xff08;即创建一个流程实例&#xff09;2.本人发起的流程实例3.本人参与的流程实例4.挂起/激活流程实例5.提前终止流程实例&#xff08;或又叫撤销流程&#xff09;6.彻底删除流程实例7.流程图查看8.判断…

java jtable不可编辑_java – 使JTable单元不可编辑

当用户双击时,我试图使JTable的所有单元格都不可编辑.我已经阅读了很多论坛帖子,一般的共识是创建一个新的表模型类,扩展DefaultTableModel然后重写方法isCellEditable(int row,int column).我做了所有这些,现在当我运行我的程序(小程序)时,没有任何东西出现在单元格中.注意我这…

Spark精华问答 | 谈谈spark中的宽窄依赖

总的来说&#xff0c;Spark采用更先进的架构&#xff0c;使得灵活性、易用性、性能等方面都比Hadoop更有优势&#xff0c;有取代Hadoop的趋势&#xff0c;但其稳定性有待进一步提高。我总结&#xff0c;具体表现在如下几个方面。1Q&#xff1a;Spark RDD是什么&#xff1f;A&am…

阿里云产品头条(2017年12月刊)

摘要&#xff1a; 一、新产品发布1、云防火墙 商业化 发布云防火墙是一款云环境下的防火墙产品&#xff0c;首创了基于业务可视的结果&#xff0c;实现业务梳理和业务隔离的技术。适用于互联网&#xff0f;通用&#xff0f;游戏&#xff0f;金融&#xff0f;新零售&#xff0f;…

一张图解读阿里云数据管理DMS企业版

摘要&#xff1a; 阿里云数据管理DMS企业版&#xff0c;作为数据管理产品大家族里的新成员&#xff0c;于2017年11月开启公测&#xff0c;今年1月底正式发布商业化版本。 作为业界领先的面向企业的数据库DevOps解决方案&#xff0c;DMS企业版旨在帮助企业安全、高效的使用数据库…

flowable实战(四)flowable任务实例管理接口

文章目录1. 任务办理模式分两种1.1. 一种直接办理模式1.2. 一种需要签收后再办理2. 转办任务3. 委派任务与代办任务4. 待办任务列表5. 待办签收列表6. 抄送任务7. 终止任务&#xff08;这个功能放到流程实例中&#xff09;8. 催办任务9. 驳回10. 超时自动跳转完成11. 任务按业务…

架构设计之「 微服务入门 」

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 奎哥来源 | 不止思考微服务这几年不可谓不火&#xff0c;很多技术团队都开始在自己的项目上引入了微服务。一方面这些团队确实很好的推动了微服务的应用和发展&#xff0c;另一方面也可以看到一些盲目追技术热点的行为所带来…

Java语言中提供了三个日期类_Java语言学习(5)-Java中基础封装类(日期、时间类)...

日期和时间封装类1、 Data类Java日期和时间采用Data类。Data类在java.util包中。Data类构造函数&#xff1a;1) Data() 采用当前时间初始化对象&#xff1b;2) Data(long millisec) 采用1970年1月1日起时间毫秒数来初始化对象。Data类的方法&#xff1a;1) …