文章转自yizhuo
MaxCompute(原ODPS)是阿里云自主研发的分布式大数据处理系统。长久以来,这套阿里自研的系统为阿里内部服务,有自己的类型系统,配套工具以及 SDK 和编程接口。但是随着公共领域对 MaxCompute 的需求越来越强烈,我们也在尽自己所能,使 MaxCompute 能够兼容现有生态,提高使用体验以及最重要的,保护用户投资。
用户接口层的基本简介
首先整体介绍一下 MaxCompute 的用户接口层。
MaxCompute 从研发的第一天起就被设计统一由 Restful API 提供服务。在 Restful API 之上,我们各种语言的 SDK。由 SDK 编写形成的各种工具、驱动等等构成了 MaxCompute 的用户接口层,即外围生态。
协议兼容:JDBC 和 Hive Proxy
JDBC 是 MaxCompute 第一次提供标准化协议的尝试。通过 JDBC,我们可以顺利对接如 Pentaho 这样的 BI 工具,如 TalentD 这样的 ETL 工具以及 SQL Workbench 这样的传统数据库管理工具(图为 ODPS JDBC on Zeppelin)。
同时,JDBC 的编程接口也为更多人所熟知,很多用户可以不用学习新的 SDK 即可编程完成常见的数据处理任务。这方面可以参考我们之前发表在云栖社区的文章《使用 odps-jdbc 接入 ODPS,不再从零开始》。
ODBC 也是重要的兼容协议之一。为此我们正在研发 Hive Proxy,直接从 thrift 协议层进行兼容,以期可以提供包括 ODBC 在内的 Hive 整个生态的接入能力。Hive Proxy 部署在客户端,将 Hive 的 thrift 请求转换成 MaxCompute 的 Restful API 请求,可以用来直接对接诸如 Tableau、Qlik 这样不直接支持 JDBC 的 BI 工具,或者 HPL 这样的 Hive 组件。
目前 Hive Proxy 正在紧密的开发测试阶段,相信不久就可以和各位见面。
编程接口兼容:RODPS 和 PyODPS
MaxCompute 的强项是大规模数据分析,这是很多数据分析师每天的主要工作。因此提供数据分析师熟悉的用户接口就变成很重要的事情。目前,我们提供的 RODPS,使用户具备在 R 中提交 SQL,并将结果数据拖回本地进行 R 分析计算的能力。
对于熟悉 Python DataFrame 的用户,我们提供的 PyODPS 则提供了更加强大的能力。PyODPS 提供了全新的分布式 ODPS DataFrame,可以直接用熟悉的 DF 来操作 MaxCompute 中的海量数据。PyODPS 能够自行构建对应的 SQL,进行优化并托管这些 SQL 的执行。PyODPS 甚至可以将本地的 Pandas DataFrame 和 ODPS DataFrame 进行混合操作(比如 join)!同时,PyODPS 天然可以与 Jupyter Notebook 相结合,构成强有力的交互开发环境。我们为此特意增加了如结果集的交互式可视化等功能,使基于 PyODPS 的数据分析空前的方便。这一切都可以通过 docker 镜像和免费体验服务快速获得。
目前,PyODPS 正在对接 MaxCompute TensorFlow。
Hadoop MR Adapter
MaxCompute 提供的 MapReduce 实现叫 OpenMR,编程接口跟 Hadoop MR 不太一样。迁移 Hadoop MR 到 OpenMR 是个挺吃力不讨好的事情,因此对于已经拥有 Hadoop MR 任务的用户,我们准备了 Hadoop MR Adapter。只需替换一个运行时 jar 包,即可将 Hadoop MR 任务在运行时改写成 OpenMR 任务执行。
目前这个插件已经接近完成,正在小范围测试。我们将在后续专门推出相关文章。
开放源代码
目前,我们的 Java SDK、PyODPS 、JDBC 驱动 等都是 github 开源项目(恕未一一列举,您可以关注 Github 的 aliyun group 来获取完整的项目列表)。我们非常希望通过开放源码的形式,获得社区的帮助和建议,和社区形成良性的互动。
同时,我们的 Restful API 也向最终用户开放,欢迎各界爱好者共同完善 MaxCompute 的生态环境。
可喜的是,我们已经收到了来自开源爱好者贡献的 Ruby 和 PHP SDK。基于 Ruby SDK,我们顺利的开发了 Fluentd 插件,实在是令人高兴的事情。
欢迎加入“数加·MaxCompute购买咨询”钉钉群(群号: 11782920)进行咨询,群二维码如下: