MaxCompute问答整理之12月

简介: 本文是基于本人对MaxCompute产品的学习进度,再结合开发者社区里面的一些问题,进而整理成文。希望对大家有所帮助。

问题一、MaxCompute内建日期函数,DATEPART函数命令格式为 bigint datepart(datetime date, string datepart)用于提取日期date中指定的时间单位datepart的值。DATETIME类型。如果输入为STRING类型会隐式转换为DATETIME类型后参与运算,其它类型抛异常。但是客户在使用函数的时候没有实现STRING类型隐式转换为DATETIME。报错信息:FAILED:ODPS-0130121:[1,50] Invalid type STRING of argument 1 for function datepart, expect DATETIME。如何解决?
打开新类型odps.sql.type.system.odps2=true时某些隐式类型转换会被禁用,包括STRING->BIGINT,STRING->DATETIME,DOUBLE->BIGINT,DECIMAL->DOUBLE,DECIMAL->BIGINT都是有精度损失或者报错的风险。这种情况可以通过cast函数做强制转换的方式来解决或者关掉新类型flag。
例如:select datepart(cast('2019-12-02 00:00:30' as datetime),'yyyy');

set odps.sql.type.system.odps2=false

问题二:MaxCompute中的数据通道Datahub 和 Tunnel 应用场景的区别是什么?
Datahub是阿里云上的实时消息队列服务,与MaxCompute紧密集成。用户可以将实时数据写入Datahub的topic,并通过Datahub的投递策略,定期将数据投递到MaxComptue表,满足实时数据准实时写入MaxCompute的需要。
Tunnel 用于批量上传数据到离线表里,适用于离线计算的场景。
可参考文档了解更多:https://help.aliyun.com/document_detail/51656.html

问题三:MaxCompute表如何设置自增序列?
可以使用ROW_NUMBER函数去实现。例如:select ROW_NUMBER() OVER(),* from tablename;
可参考文档:https://help.aliyun.com/document_detail/34994.html

问题四:如何使用MaxCompute Java SDK设置SQL的Flag?
使用DataWorks或MaxCompute Console提交SQL时,通常需要设置SQL的Flag。如果需要使用MaxCompute新数据类型,通过Session级别方式开启,则需要在涉及新数据类型的SQL前加Set Flag语句:set odps.sql.type.system.odps2=true;。 使用SDK提交SQL时,不能简单地把Set Flag语句直接放到SQL Query中执行。以Java SDK为例,设置Flag的正确方式如下。 // 构造SQLTask对象。SQLTask task = new SQLTask();task.setName("foobar");task.setQuery("select ...");// 设置flag。Map settings = new HashMap<>();settings.put("odps.sql.type.system.odps2", "true");... // 设置其它flags。task.setProperty("settings", new JSONObject(settings).toString()); // 这里是关键:将flags对应的json string设置到settings property中。Instance instance = odps.instances().create(task); // 执行。

问题五:MaxCompute SQL中运行分区表全表扫描后,为什么会费用增加?
全表扫描费用增加是因为输入量增加了,例如有一张表按时间(天)分区,存放了365个分区(365天)数据,全表扫描则输入量为365个分区的数据量,如果用分区裁剪只取某个分区(某天)数据,则输入量就只有那个分区的数据量。

问题六:MaxCompute中,select * from sale_detail order by region; 报错:Semantic analysis exception-ORDER BY must be used with a LIMET clause
ORDER BY 必须与limit共同使用。ORDER BY没有与limit共同使用时,报错返回。
可参考文档:https://help.aliyun.com/document_detail/73777.html

问题七:在 MaxCompute 中,一张表的分区的数量是否越多越好?
在 MaxCompute 中,一张表最多允许有 60000 个分区,同时每个分区的容量没有上限。但是分区数量过多,会导致统计和分析过程非常不方便。
MaxCompute 也会限制单个作业中最多不能超过一定数量的 instance,而作业中的 instance 和您输入的数据量和分区数量密切相关的。所以您需要根据业务需要,选择合适的分区策略。

问题八:如果一开始并没有分区字段,是否可以增加或更改分区?
您不可以在源表上直接增加或更改分区键,分区键一旦创建就不能更改。但您可以重新创建一张分区表,使用动态分区SQL把源表数据导入到新分区表。
可参考文档:https://help.aliyun.com/document_detail/73779.html

问题九:如何查看MaxCompute数据量?
1、针对全表,查看物理空间,您可以使用desc命令
2、如果要查看表的数据条数,需要使用SQL。例如select count() as cnt from iris;

问题十:在MaxCompute中,需要将一行转化为多行的时候,我们该如何解决?
Lateral View和split,explode等UDTF一起使用,它能够将一行数据拆成多行数据,并在此基础上对拆分后的数据进行聚合。
可参考文档:https://help.aliyun.com/document_detail/87722.html

更多阿里巴巴大数据计算技术和产品信息,可点击链接加入 MaxCompute开发者社区2群
https://h5.dingtalk.com/invite-page/index.html?bizSource=____source____&corpId=dingb682fb31ec15e09f35c2f4657eb6378f&inviterUid=E3F28CD2308408A8&encodeDeptId=0054DC2B53AFE745
或扫码加入
2群.png

目录
相关文章
|
前端开发 JavaScript 开发者
【QML进阶 进度条设计】打造动态弧形进度条特效
【QML进阶 进度条设计】打造动态弧形进度条特效
822 2
|
9月前
|
人工智能 程序员 定位技术
和AI谈恋爱指南:从尬聊到心有灵犀
想让AI理解你的需求?本文用最轻松有趣的方式教你掌握提示词工程,从小白到高手,让ChatGPT成为你最得力的助手。通过生动的类比和实战案例,轻松掌握与AI对话的艺术!
529 8
|
7月前
|
人工智能 文字识别 API
医疗票据OCR技术演进:从模板匹配到智能理解的突破
医疗票据OCR正从传统模板匹配迈向智能理解新阶段。快瞳科技融合OCR与医疗知识图谱,实现高精度、自适应识别,显著提升效率与准确性,推动医疗数字化智能化升级。
540 3
|
10月前
|
人工智能 自然语言处理 文字识别
快手封号多久能恢复正常?
快手账号封禁恢复全流程技术解析
|
存储 监控 安全
智能家居安全漏洞分析与防护策略
随着物联网技术的快速发展,智能家居系统已成为现代生活的一个趋势。然而,随之而来的安全问题也日益突出。本文将深入探讨智能家居系统中存在的安全漏洞,并针对性地提出一系列有效的防护措施。通过实际案例分析,旨在提升用户的安全防护意识,确保智能家居环境的安全性和可靠性。
374 27
|
存储 安全 C语言
C语言 二级指针应用场景
本文介绍了二级指针在 C 语言中的应用,
|
程序员 开发者
技术成长之旅:从新手到专家的蜕变之路
【8月更文挑战第8天】在技术的海洋中,每一位程序员都曾是一名初学者。本文将通过个人经历和行业观察,探讨如何从技术新手成长为领域专家的过程。我们将深入讨论持续学习、实践、反思、交流与创新的重要性,并分享一些实用的成长策略。无论你是刚刚起步的技术爱好者,还是正在追求更高成就的资深开发者,这篇文章都将为你提供宝贵的启示和指导。
|
敏捷开发 缓存 JavaScript
阿里云云效产品使用合集之流水线运行慢该如何优化
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
弹性计算
阿里云服务器的带宽计费模式是什么意思?咋收费的?
阿里云服务器带宽计费模式分为“按固定带宽”和“按使用流量”,有什么区别?按固定带宽是指直接购买多少M带宽,比如1M、5M、10M、100M等,阿里云直接分配用户所购买的带宽值,根据带宽大小先付费再使用;按使用流量是先设置一个带宽峰值,然后根据实际公网产生的出流量来计算费用,先使用后付费。阿里云百科分享阿里云服务器“带宽计费模式”详细区别、计费及注意事项

热门文章

最新文章

相关产品

  • 云原生大数据计算服务 MaxCompute