原标题:支付宝宣布成立小程序事业部,小程序数量超过2万
原标题:“链能经济”白皮书发布 多机构发起成立链能产业联盟
原标题:MaxCompute重装上阵 第五弹 – SELECT TRANSFOR
原标题:马云宣布退休给企业创始人们提了个醒
PingWest品玩9月12日讯,在蚂蚁开放日小程序专场上,支付宝宣布正式成立小程序事业部,并开放支付成功页入口,全面对接阿里生态,截至目前,支付宝小程序平台的小程序数量共计超过2万,日活达1.2亿,用户数达3亿。
摘要:
MaxCompute(原ODPS)是阿里云自主研发的具有业界领先水平的分布式大数据处理平台,
尤其在集团内部得到广泛应用,支撑了多个BU的核心业务。
MaxCompute除了持续优化性能外,也致力于提升SQL语言的用户体验和表达能力,提高广大ODPS开发者的生产力。
9月10日,马云通过阿里巴巴官方微博发布公开信宣布:一年后的阿里巴巴20周年之际,即2019年9月10日,他将不再担任集团董事局主席,届时由现任集团CEO张勇接任。谈及自己未来的发展,马云表示,除了继续担任阿里巴巴合伙人和为合伙人组织机制做努力和贡献外,想回归教育,“做我热爱的事情会让我无比兴奋和幸福。”这是阿里巴巴准备了十年的计划。
此外,支付宝官方团队还宣布在未来3年投入10亿科技创新基金,帮助开发者和商家升级各类服务场景。支付宝官方团队透露,未来半年内,支付宝小程序将逐步向个人开发者开放。返回搜狐,查看更多
蓝鲸TMT频道9月12日讯,今日,香港国际新经济研究院联合多家机构共同发布了《链能经济白皮书》(下称《白皮书》),根据白皮书显示,链能经济体系主要采用“互动+资源整合”模式,即依托于区块链技术为实体经济赋能,将实体企业与客户有机串联,构建新型的应用场景。
MaxCompute(原ODPS)是阿里云自主研发的具有业界领先水平的分布式大数据处理平台,
尤其在集团内部得到广泛应用,支撑了多个BU的核心业务。
MaxCompute除了持续优化性能外,也致力于提升SQL语言的用户体验和表达能力,提高广大ODPS开发者的生产力。
马云真的宣布提前退休了,这消息一下子引爆了网络。一方面因为这是马云,另一方面是这个决定让人既羡慕又佩服。羡慕就不用说了,而佩服的地方是,马云放弃的可不是我们手头上这些苦哈哈的工作,而是中国最伟大的互联网公司之一的阿里巴巴的领导权。
责任编辑:
报告撰写人之一、香港国际新经济研究院高级研究员、质数链网CEO邓柯表示,和以往“链改”、“币改”等不同的是,“链能经济”理论既认为区块链技术和数字权益是区块链无法分割的“一体两面”,同时也杜绝了代币融资,“链能经济的实质是倡导去除区块链资产的融资属性,回归激励属性。”
MaxCompute基于ODPS2.0新一代的SQL引擎,显著提升了SQL语言编译过程的易用性与语言的表达能力。我们在此推出MaxCompute(ODPS2.0)重装上阵系列文章
说到权力,对于人类来说,尤其对于男性这个物种来说,它的诱惑力太大了。托尔金的小说《指环王》里的魔戒,就象征着权力,看看魔戒把那些拥有者折磨成什么样了?尤其是怪物格伦,简直像是个毒瘾患者,形销骨立。
香港国际新经济研究院于2018年6月7日在香港正式挂牌成立,是一家综合性科研服务机构。研究领域包括区块链行业发展研究、全球区块链行业投资调研、区块链技术的实际落地应用等。“链能经济”正是由香港国际新经济研究院研究提出。返回搜狐,查看更多
第一弹 – 善用MaxCompute编译器的错误和警告
当我们理解了马云放弃了什么之后,就没法不佩服他的决心和智慧。我们不妨对比一下,乔布斯两次离开了苹果,然而都是被动的。第一次是因为他的股权被稀释了然后被踢出董事会,第二次则是因为他已经病入膏肓,不得不放弃。所以如果主动选择的话,乔布斯绝不想失去权力。而这样一位强硬的创始人,既把公司推到了前所未有的高度,但同时也让公司对乔布斯产生了强烈的依赖性,一旦失去他,就变得举步维艰。
责任编辑:
第二弹 – 新的基本数据类型与内建函数
这其实就给所有的企业都提出一个难题,如何在失去创始人之后还能够继续稳步发展。实际上欧美那些老牌企业已经给出了答案,那就是职业经理人制度。一家企业终究会从由创业者掌控、由其家族控股的企业,转变为股权分散、由职业经理人经营的企业。原因很简单,你不能保证创业者家族的每一代继承人都具有足够的能力,所以那些坚持家族掌控的企业往往都死掉了。
第三弹 – 复杂类型
马云在年富力强的时候选择退休,这选择的确出乎我们的意料。不要说我国的第一代互联网创业者了,包括港台地区在内的我国第一代企业家,似乎也少有提前退休的人。就像乔布斯一样,或许死亡才是他们退休的时刻。这一方面跟他们健康长寿有很大关系,另一方面他们也不情愿把亲手打造的商业帝国交出去。我想除了权力本身的吸引力之外,他们还担心接班人的能力。像李嘉诚,九十多岁了才终于决定退休。
第四弹 – CTE,VALUES,SEMIJOIN
回头再来看马云,其实你很难讲他真的退休了,他并没有完全失去对企业的掌控力。所以他的选择更像是隐身幕后去做自己想做的事情。他甚至都没有比尔·盖茨退的那样彻底,完全卖掉自己微软的股票,和微软做切割。至于说接班人的能力问题,用马云自己的话说,这个计划已经准备了10年了,并不是仓促决定的。但不管怎么讲,马云都是中国企业家的先行者,探讨并践行了企业传承的一种可能性。
上次向您介绍了CTE,VALUES,SEMIJOIN,本篇向您介绍MaxCompute对其他脚本语言的支持
而且对于企业来说,长远的发展不仅仅依赖于创始人的天赋和激情,同时也需要专业而稳固的技术建设,所谓创业容易守业难,而这正是职业经理人的价值。美国著名未来学家韦布就谈到:进步既依赖于独创思维也需要缜密评估。全凭幻想无法让新想法商业化,要使其变得切实可行,先要梳理程序并规划预算。但是,一味强调逻辑和线性思维只会让“登月计划”胎死腹中。所以,交替使用广博的创造性思维和更加实际的分析性评估十分重要,这能平衡两种力量,既能支持创新又能制约与平衡系统保障未来。从这个意义上来讲,马云和乔布斯代表了创造性思维,而张勇和库克或许就代表了理性思维。
-
SELECT TRANSFORM。
-
场景1
- 我的系统要迁移到MaxCompute平台上,系统中原来有很多功能是使用脚本来完成的,包括python,shell,ruby等脚本。
要迁移到MaxCompute上,我需要把这些脚本全部都改造成UDF/UDAF/UDTF。改造过程不仅需要耗费时间人力,还需要做一遍又一遍的测试,从而保证改造成的udf和原来的脚本在逻辑上是等价的。我希望能有更简单的迁移方式。 - 场景2
- SQL比较擅长的是集合操作,而我需要做的事情要对一条数据做更多的精细的计算,现有的内置函数不能方便的实现我想要的功能,而UDF的框架不够灵活,并且Java/Python我都不太熟悉。相比之下我更擅长写脚本。我就希望能够写一个脚本,数据全都输入到我的脚本里来,我自己来做各种计算,然后把结果输出。而MaxCompute平台就负责帮我把数据做好切分,让我的脚本能够分布式执行,负责数据的输入表和输出表的管理,负责JOIN,UNION等关系操作就好了。
去年,优步公司创始人卡兰尼克被自己的公司解雇了。毫无疑问,卡兰尼克是创造性思维的天才,但显然投资人认为卡兰尼克缺乏理性思维的能力,他激进的主张和暴躁的脾气让人难以忍受,这时候,请他离开也许是对公司更好的选择。当然,如果未来优步陷入了绝境,需要有人大胆开拓的时候,卡兰尼克也未必没有回归的可能,就像乔布斯所经历的那样。所以同样,马云的退休或许并不彻底。
www.8455.com,上述功能可以使用SELECT TRANSFORM来实现
马云宣布退休这件事给所有企业创始人提了个醒,是到了思考退休的时候了。因为我国运行市场经济的时间比较短,所以我国的企业家几乎都是一代企业家,都面临着接班人问题。那么会有多少人学习马云,又有多少人学习李嘉诚呢?这个很难讲。但就像马云希望把阿里巴巴打造成一家百年老店一样,如果创业者们希望自己的企业基业长青,那么消除掉创始人的光环,让企业管理职业化将是重要的变革。而且这个变革越早越好。
SELECT TRANSFORM 介绍
本报评论员 牛角返回搜狐,查看更多
此文中采用MaxCompute Studio作展示,首先,安装MaxCompute
Studio,导入测试MaxCompute项目,创建工程,建立一个新的MaxCompute脚本文件, 如下
责任编辑:
提交作业可以看到执行计划(全部展开后的视图):
Select
transform允许sql用户指定在服务器上执行一句shell命令,将上游数据各字段用tab分隔,每条记录一行,逐行输入shell命令的stdin,并从stdout读取数据作为输出,送到下游。Shell命令的本质是调用Unix的一些utility,因此可以启动其他的脚本解释器。包括python,java,php,awk,ruby等。
该命令兼容Hive的Transform功能,可以参考Hive的文档。一些需要注意的点如下:
-
Using
子句指定的是要执行的命令,而非资源列表,这一点和大多数的MaxCompute
SQL语法不一样,这么做是为了和hive的语法保持兼容。 -
输入从stdin传入,输出从stdout传出;
-
可以配置分隔符,默认使用 \t 分隔列,用换行分隔行;
-
可以自定义reader/writer,但用内置的reader/writer会快很多
-
使用自定义的资源(脚本文件,数据文件等),可以使用 set
odps.sql.session.resources=foo.sh,bar.txt;
来指定。可以指定多个resource文件,用逗号隔开(因此不允许resource名字中包含逗号和分号)。此外我们还提供了resources子句,可以在using
子句后面指定 resources ‘foo.sh’, ‘bar.txt’
来指定资源,两种方式是等价的(参考“用odps跑测试”的例子);
6.
资源文件会被下载到执行指定命令的工作目录,可以使用文件接口打开./bar.txt文件。
目前odps select transform完全兼容了hive的语法、功能和行为,包括
input/output row format 以及
reader/writer。Hive上的脚本,大部分可以直接拿来运行,部分脚本只需要经过少许改动即可运行。另外我们很多功能都用比hive更高执行效率的语言
(C++) 重构,用以优化性能。
应用场景举例
理论上select transform能实现的功能udtf都能实现,但是select
transform比udtf要灵活得多。且select
transform不仅支持java和python,还支持shell,perl等其它脚本和工具。
且编写的过程要简单,特别适合adhoc功能的实现。举几个例子:
- 无中生有造数据
或者使用python
上面的语句造出一份有50行的数据表,值是从1到50;
测试时候的数据就可以方便造出来了。功能看似简单,但以前是odps的一个痛点,没有方便的办法造数据,就不方便测试以及初学者的学习和探索。当然这也可以通过udtf来实现,但是需要复杂的流程:进入ide->写udtf->打包->add
jar/python->create function->执行->drop function->drop
resource。
- awk 用户会很喜欢这个功能
上面的语句仅仅是把value原样输出,但是熟悉awk的用户,从此过上了写awk脚本不写sql的日子
- 用odps跑测试
或者
这个例子是为了说明,很多java的utility可以直接拿来运行。java和python虽然有现成的udtf框架,但是用select
transform编写更简单,并且不需要额外依赖,也没有格式要求,甚至可以实现离线脚本拿来直接就用。
- 支持其他脚本语言
select transform (key, value) using “perl -e ‘while($input =
<STDIN>){print $input;}'” from src;
上面用的是perl。这其实不仅仅是语言支持的扩展,一些简单的功能,awk,
python, perl, shell
都支持直接在命令里面写脚本,不需要写脚本文件,上传资源等过程,开发过程更简单。另外,由于目前我们计算集群上没有php和ruby,所以这两种脚本不支持。
- 可以串联着用,使用 distribute by和 sort by对输入数据做预处理
或者用map,reduce的关键字会让逻辑显得清楚一些
理论上OpenMR的模型都可以映射到上面的计算过程。注意,使用map,reduce,select
transform这几个语法其实语义是一样的,用哪个关键字,哪种写法,不影响直接过程和结果。
性能
性能上,SELECT TRANSFORM 与UDTF
各有千秋。经过多种场景对比测试,数据量较小时,大多数场景下select
transform有优势,而数据量大时UDTF有优势。由于transform的开发更加简便,所以select
transform非常适合做adhoc的数据分析。
UDTF的优势:
- UDTF是有类型,而Transform的子进程基于stdin/stdout传输数据,所有数据都当做string处理,因此transform多了一步类型转换;
- Transform数据传输依赖于操作系统的管道,而目前管道的buffer仅有4KB,且不能设置,
transform读/写 空/满 的pipe会导致进程被挂起; - UDTF的常量参数可以不用传输,而Transform没办法利用这个优化。
SELECT TRANSFORM 的优势:
- 子进程和父进程是两个进程,而UDTF是单线程的,如果计算占比比较高,数据吞吐量比较小,可以利用服务器的多核特性
- 数据的传输通过更底层的系统调用来读写,效率比java高
- SELECT
TRANSFORM支持的某些工具,如awk,是natvie代码实现的,和java相比理论上可能会有性能优势。
小结
MaxCompute基于ODPS2.0的SQL引擎,提供了SELECT
TRANSFORM功能,可以明显简化对脚本代码的引用,与此同时,也提高了性能!我们推荐您尽量使用SELECT
TRANSFORM。
标注
- 注一,USING
后面的字符串,在后台是直接起的子进程来调起命令,没有起shell,所以shell的某些语法,如输入输出重定向,管道等是不支持的。如果用户需要可以以
shell 作为命令,真正的命令作为数据输入,参考“无中生有造数据”的例子; - 注二,JAVA 和 PYTHON 的实际路径,可以从JAVA_HOME 和 PYTHON_HOME
环境变量中得到作业;
作者:隐林
本文为云栖社区原创内容,未经允许不得转载。返回搜狐,查看更多
责任编辑: