阿里数据云ODPS无法在命令行窗口使用传统的INSERT语句插入数据信息,究其原因,主要是其命令行窗口实现过于简单,并为实现真正意义上的INSERT插入语句解析。
在需要对ODPS某表插入一条语句的时候,通常采用如下方式:
INSERT INTO TABLE DES_TABLE
SELECT C1,C2,C3,....
FROM(
SELECT COUNT(1) FROM DES_TABLE
)A
在这种方式下,ODPS会将此SQL放入ODPS进行解析,生成DAG作业,然后一步步地执行。这种方式插入数据,其响应时间通常是单笔数据5到10秒左右,如果是插入大量数据,显然无法容忍。此时,需要采用文件导入的方式进行,例如通过DSHIP进行数据导入。
sh ./odps-dship/dship upload -p project_test aa.dat TABLE_AA -s true -fd "," -ni "NULL";
ODPS导入的速度是非常快的,通常至少可达到5000笔/秒。
DSHIP和ODPS命令行窗口同样是基于ODPS的API进行开发,为何差距如此之大呢?经过对DSHIP的源码了解,其实现原理本质上是采用ODPS Tunnel直接将数据经过Profobuf批量数据写入ODPS,无需像ODPS命令行窗口执行SQL那样需要进行作业解析,DAG作业一步步地慢慢执行。
与DSHIP相类似地,ODPS-JDBC也采用了ODPS Tunnel进行数据批量写入。因此,如果需要从应用程序向ODPS插入数据,建议采用ODPS-JDBC批量写的方式,这种方式的写入效率可与DSHIP批量导入的效率相同。
话又说回来,为何ODPS-JDBC可以实现数据批量INSERT,而ODPS命令行窗口却不可以呢?原来,ODPS要求在将数据写入ODPS前,需要对数据进行预先的验证,因此INSERT过程需要分为两步:第一步,对INSERT语句进行简单验证;第二步,将数据通过Tunnel写入到ODPS。即,先提交预编译SQL(注意:ODPS要求INSERT语句中的?出现的个数必须与表的列数相同):
INSERT INTO TABLE DEST_DATE VALUES(?,?,?,?);
然后在提交待插入的数据。ODPS命令行并没有实现INSERT语句中带VALUE值的情况。(其实不难实现。)
因此,ODPS命令行窗口必须采用折中的SQL语句才能实现数据插入。进而导致ODPS写入数据非常缓慢的假象。实际上,基于ODPS Tunnel的JDBC批量插入、DSHIP导入速度是非常快速的。
希望ODPS命令行窗口能够改善为可基于ODPS Tunnel进行数据插入。
相关推荐
>odps-jdbc</ artifactId > < version >VERSION</ version > </ dependency > 入门 使用 ODPS JDBC 驱动程序就像使用其他 JDBC 驱动程序一样。 它包含以下几个步骤: 1. 使用Class.forName()显式加载 ...
Java连接ODPS文档和代码
阿里云 odps 文档.pdf
阿里云odpsSql手册1
odps(MaxCompute) 权威详尽说明帮助手册,包括odps 底层优化原理
用来连接odps的客户端,可以在ideal中引入该插件进行连接odps
ODPS 提供海量数据处理及分析服务,让用户远离大数据运算烦恼。 开放数据处理服务(Open Data Processing Service,ODPS)是基于飞天分布式系统... 安全:ODPS 提供了功能强大的安全服务,为用户的数据安全提供保护
阿里的odps的使用说明,简单快速上手,希望对新手有一些帮助
java采用jdbc连接neo4j所需要jar
阿里巴巴的 odps 文档,帮助新手快速扫盲 本资料共包含以下附件: odps_SQL.pdf
ODPS
odps权威指南最新版
odps的eclipse插件
阿里odps开放平台的参考手册,里面详细介绍了odps的操作
ODPS(Open Data Processing Service)是阿里巴巴自主研发的海量数据处理和分析的服务平台,主要应用于数据分析、海量数据统计、数据挖掘、机器学习和商业智能等领域。目前,ODPS不仅在阿里内部得到广泛应用,享有很...
某软的公文,使用msi后还用installshield打包,只能手工安装,现已解压并静默。
【大纲】 ODPS 介绍 ODPS MapReduce MapReduce 作为开放服务
ODPS MapReduce 实现和开放实践.zip
包含5个pdf文档(都是内部文档截止到2014-4-28未开放的): Map-Reduce SDK简介 — ODPS mapreduce快速入门 — ODPS MapReduce — ODPS 如何运行MapReduce — ODPS 应用限制 — ODPS
阿里开放数据处理服务ODPS介绍.pptx