• 关于

    关联模型常见问题及解决方法

    的搜索结果

问题

【教程免费下载】R语言数据分析

玄学酱 2019-12-01 22:07:40 1232 浏览量 回答数 0

回答

在工程实践上,为了保障系统的可用性,互联网系统大多将强一致性需求转换成最终一致性的需求,并通过系统执行幂等性的保证,保证数据的最终一致性。但在电商等场景中,对于数据一致性的解决方法和常见的互联网系统(如 MySQL 主从同步)又有一定区别,分成以下 6 种解决方案。(一)规避分布式事务——业务整合业务整合方案主要采用将接口整合到本地执行的方法。拿问题场景来说,则可以将服务 A、B、C 整合为一个服务 D 给业务,这个服务 D 再通过转换为本地事务的方式,比如服务 D 包含本地服务和服务 E,而服务 E 是本地服务 A ~ C 的整合。优点:解决(规避)了分布式事务。缺点:显而易见,把本来规划拆分好的业务,又耦合到了一起,业务职责不清晰,不利于维护。由于这个方法存在明显缺点,通常不建议使用。(二)经典方案 - eBay 模式此方案的核心是将需要分布式处理的任务通过消息日志的方式来异步执行。消息日志可以存储到本地文本、数据库或消息队列,再通过业务规则自动或人工发起重试。人工重试更多的是应用于支付场景,通过对账系统对事后问题的处理。消息日志方案的核心是保证服务接口的幂等性。考虑到网络通讯失败、数据丢包等原因,如果接口不能保证幂等性,数据的唯一性将很难保证。eBay 方式的主要思路如下。Base:一种 Acid 的替代方案此方案是 eBay 的架构师 Dan Pritchett 在 2008 年发表给 ACM 的文章,是一篇解释 BASE 原则,或者说最终一致性的经典文章。文中讨论了 BASE 与 ACID 原则在保证数据一致性的基本差异。如果 ACID 为分区的数据库提供一致性的选择,那么如何实现可用性呢?答案是BASE (basically available, soft state, eventually consistent)BASE 的可用性是通过支持局部故障而不是系统全局故障来实现的。下面是一个简单的例子:如果将用户分区在 5 个数据库服务器上,BASE 设计鼓励类似的处理方式,一个用户数据库的故障只影响这台特定主机那 20% 的用户。这里不涉及任何魔法,不过它确实可以带来更高的可感知的系统可用性。文章中描述了一个最常见的场景,如果产生了一笔交易,需要在交易表增加记录,同时还要修改用户表的金额。这两个表属于不同的远程服务,所以就涉及到分布式事务一致性的问题。文中提出了一个经典的解决方法,将主要修改操作以及更新用户表的消息放在一个本地事务来完成。同时为了避免重复消费用户表消息带来的问题,达到多次重试的幂等性,增加一个更新记录表 updates_applied 来记录已经处理过的消息。基于以上方法,在第一阶段,通过本地的数据库的事务保障,增加了 transaction 表及消息队列 。在第二阶段,分别读出消息队列(但不删除),通过判断更新记录表 updates_applied 来检测相关记录是否被执行,未被执行的记录会修改 user 表,然后增加一条操作记录到 updates_applied,事务执行成功之后再删除队列。通过以上方法,达到了分布式系统的最终一致性。进一步了解 eBay 的方案可以参考文末链接。(三)去哪儿网分布式事务方案随着业务规模不断地扩大,电商网站一般都要面临拆分之路。就是将原来一个单体应用拆分成多个不同职责的子系统。比如以前可能将面向用户、客户和运营的功能都放在一个系统里,现在拆分为订单中心、代理商管理、运营系统、报价中心、库存管理等多个子系统。拆分首先要面临的是什么呢?最开始的单体应用所有功能都在一起,存储也在一起。比如运营要取消某个订单,那直接去更新订单表状态,然后更新库存表就 ok 了。因为是单体应用,库在一起,这些都可以在一个事务里,由关系数据库来保证一致性。但拆分之后就不同了,不同的子系统都有自己的存储。比如订单中心就只管理自己的订单库,而库存管理也有自己的库。那么运营系统取消订单的时候就是通过接口调用等方式来调用订单中心和库存管理的服务了,而不是直接去操作库。这就涉及一个『分布式事务』的问题。分布式事务有两种解决方式优先使用异步消息。上文已经说过,使用异步消息 Consumer 端需要实现幂等。幂等有两种方式,一种方式是业务逻辑保证幂等。比如接到支付成功的消息订单状态变成支付完成,如果当前状态是支付完成,则再收到一个支付成功的消息则说明消息重复了,直接作为消息成功处理。另外一种方式如果业务逻辑无法保证幂等,则要增加一个去重表或者类似的实现。对于 producer 端在业务数据库的同实例上放一个消息库,发消息和业务操作在同一个本地事务里。发消息的时候消息并不立即发出,而是向消息库插入一条消息记录,然后在事务提交的时候再异步将消息发出,发送消息如果成功则将消息库里的消息删除,如果遇到消息队列服务异常或网络问题,消息没有成功发出那么消息就留在这里了,会有另外一个服务不断地将这些消息扫出重新发送。有的业务不适合异步消息的方式,事务的各个参与方都需要同步的得到结果。这种情况的实现方式其实和上面类似,每个参与方的本地业务库的同实例上面放一个事务记录库。比如 A 同步调用 B,C。A 本地事务成功的时候更新本地事务记录状态,B 和 C 同样。如果有一次 A 调用 B 失败了,这个失败可能是 B 真的失败了,也可能是调用超时,实际 B 成功。则由一个中心服务对比三方的事务记录表,做一个最终决定。假设现在三方的事务记录是 A 成功,B 失败,C 成功。那么最终决定有两种方式,根据具体场景:重试 B,直到 B 成功,事务记录表里记录了各项调用参数等信息;执行 A 和 B 的补偿操作(一种可行的补偿方式是回滚)。对 b 场景做一个特殊说明:比如 B 是扣库存服务,在第一次调用的时候因为某种原因失败了,但是重试的时候库存已经变为 0,无法重试成功,这个时候只有回滚 A 和 C 了。那么可能有人觉得在业务库的同实例里放消息库或事务记录库,会对业务侵入,业务还要关心这个库,是否一个合理的设计?实际上可以依靠运维的手段来简化开发的侵入,我们的方法是让 DBA 在公司所有 MySQL 实例上预初始化这个库,通过框架层(消息的客户端或事务 RPC 框架)透明的在背后操作这个库,业务开发人员只需要关心自己的业务逻辑,不需要直接访问这个库。总结起来,其实两种方式的根本原理是类似的,也就是将分布式事务转换为多个本地事务,然后依靠重试等方式达到最终一致性。(四)蘑菇街交易创建过程中的分布式一致性方案交易创建的一般性流程我们把交易创建流程抽象出一系列可扩展的功能点,每个功能点都可以有多个实现(具体的实现之间有组合/互斥关系)。把各个功能点按照一定流程串起来,就完成了交易创建的过程。面临的问题每个功能点的实现都可能会依赖外部服务。那么如何保证各个服务之间的数据是一致的呢?比如锁定优惠券服务调用超时了,不能确定到底有没有锁券成功,该如何处理?再比如锁券成功了,但是扣减库存失败了,该如何处理?方案选型服务依赖过多,会带来管理复杂性增加和稳定性风险增大的问题。试想如果我们强依赖 10 个服务,9 个都执行成功了,最后一个执行失败了,那么是不是前面 9 个都要回滚掉?这个成本还是非常高的。所以在拆分大的流程为多个小的本地事务的前提下,对于非实时、非强一致性的关联业务写入,在本地事务执行成功后,我们选择发消息通知、关联事务异步化执行的方案。消息通知往往不能保证 100% 成功;且消息通知后,接收方业务是否能执行成功还是未知数。前者问题可以通过重试解决;后者可以选用事务消息来保证。但是事务消息框架本身会给业务代码带来侵入性和复杂性,所以我们选择基于 DB 事件变化通知到 MQ 的方式做系统间解耦,通过订阅方消费 MQ 消息时的 ACK 机制,保证消息一定消费成功,达到最终一致性。由于消息可能会被重发,消息订阅方业务逻辑处理要做好幂等保证。所以目前只剩下需要实时同步做、有强一致性要求的业务场景了。在交易创建过程中,锁券和扣减库存是这样的两个典型场景。要保证多个系统间数据一致,乍一看,必须要引入分布式事务框架才能解决。但引入非常重的类似二阶段提交分布式事务框架会带来复杂性的急剧上升;在电商领域,绝对的强一致是过于理想化的,我们可以选择准实时的最终一致性。我们在交易创建流程中,首先创建一个不可见订单,然后在同步调用锁券和扣减库存时,针对调用异常(失败或者超时),发出废单消息到MQ。如果消息发送失败,本地会做时间阶梯式的异步重试;优惠券系统和库存系统收到消息后,会进行判断是否需要做业务回滚,这样就准实时地保证了多个本地事务的最终一致性。(五)支付宝及蚂蚁金融云的分布式服务 DTS 方案业界常用的还有支付宝的一种 xts 方案,由支付宝在 2PC 的基础上改进而来。主要思路如下,大部分信息引用自官方网站。分布式事务服务简介分布式事务服务 (Distributed Transaction Service, DTS) 是一个分布式事务框架,用来保障在大规模分布式环境下事务的最终一致性。DTS 从架构上分为 xts-client 和 xts-server 两部分,前者是一个嵌入客户端应用的 JAR 包,主要负责事务数据的写入和处理;后者是一个独立的系统,主要负责异常事务的恢复。核心特性传统关系型数据库的事务模型必须遵守 ACID 原则。在单数据库模式下,ACID 模型能有效保障数据的完整性,但是在大规模分布式环境下,一个业务往往会跨越多个数据库,如何保证这多个数据库之间的数据一致性,需要其他行之有效的策略。在 JavaEE 规范中使用 2PC (2 Phase Commit, 两阶段提交) 来处理跨 DB 环境下的事务问题,但是 2PC 是反可伸缩模式,也就是说,在事务处理过程中,参与者需要一直持有资源直到整个分布式事务结束。这样,当业务规模达到千万级以上时,2PC 的局限性就越来越明显,系统可伸缩性会变得很差。基于此,我们采用 BASE 的思想实现了一套类似 2PC 的分布式事务方案,这就是 DTS。DTS在充分保障分布式环境下高可用性、高可靠性的同时兼顾数据一致性的要求,其最大的特点是保证数据最终一致 (Eventually consistent)。简单的说,DTS 框架有如下特性:最终一致:事务处理过程中,会有短暂不一致的情况,但通过恢复系统,可以让事务的数据达到最终一致的目标。协议简单:DTS 定义了类似 2PC 的标准两阶段接口,业务系统只需要实现对应的接口就可以使用 DTS 的事务功能。与 RPC 服务协议无关:在 SOA 架构下,一个或多个 DB 操作往往被包装成一个一个的 Service,Service 与 Service 之间通过 RPC 协议通信。DTS 框架构建在 SOA 架构上,与底层协议无关。与底层事务实现无关: DTS 是一个抽象的基于 Service 层的概念,与底层事务实现无关,也就是说在 DTS 的范围内,无论是关系型数据库 MySQL,Oracle,还是 KV 存储 MemCache,或者列存数据库 HBase,只要将对其的操作包装成 DTS 的参与者,就可以接入到 DTS 事务范围内。一个完整的业务活动由一个主业务服务与若干从业务服务组成。主业务服务负责发起并完成整个业务活动。从业务服务提供 TCC 型业务操作。业务活动管理器控制业务活动的一致性,它登记业务活动中的操作,并在活动提交时确认所有的两阶段事务的 confirm 操作,在业务活动取消时调用所有两阶段事务的 cancel 操作。”与 2PC 协议比较,没有单独的 Prepare 阶段,降低协议成本。系统故障容忍度高,恢复简单(六)农信网数据一致性方案电商业务公司的支付部门,通过接入其它第三方支付系统来提供支付服务给业务部门,支付服务是一个基于 Dubbo 的 RPC 服务。对于业务部门来说,电商部门的订单支付,需要调用支付平台的支付接口来处理订单;同时需要调用积分中心的接口,按照业务规则,给用户增加积分。从业务规则上需要同时保证业务数据的实时性和一致性,也就是支付成功必须加积分。我们采用的方式是同步调用,首先处理本地事务业务。考虑到积分业务比较单一且业务影响低于支付,由积分平台提供增加与回撤接口。具体的流程是先调用积分平台增加用户积分,再调用支付平台进行支付处理,如果处理失败,catch 方法调用积分平台的回撤方法,将本次处理的积分订单回撤。用户信息变更公司的用户信息,统一由用户中心维护,而用户信息的变更需要同步给各业务子系统,业务子系统再根据变更内容,处理各自业务。用户中心作为 MQ 的 producer,添加通知给 MQ。APP Server 订阅该消息,同步本地数据信息,再处理相关业务比如 APP 退出下线等。我们采用异步消息通知机制,目前主要使用 ActiveMQ,基于 Virtual Topic 的订阅方式,保证单个业务集群订阅的单次消费。总结分布式服务对衍生的配套系统要求比较多,特别是我们基于消息、日志的最终一致性方案,需要考虑消息的积压、消费情况、监控、报警等。

小川游鱼 2019-12-02 01:46:40 0 浏览量 回答数 0

问题

【精品问答】130+大数据面试汇总

问问小秘 2019-12-01 21:52:42 1644 浏览量 回答数 2

阿里云试用中心,为您提供0门槛上云实践机会!

0元试用32+款产品,最高免费12个月!拨打95187-1,咨询专业上云建议!

回答

一、算法工程师简介 (通常是月薪15k以上,年薪18万以上,只是一个概数,具体薪资可以到招聘网站如拉钩,猎聘网上看看) 算法工程师目前是一个高端也是相对紧缺的职位; 算法工程师包括 音/视频算法工程师(通常统称为语音/视频/图形开发工程师)、图像处理算法工程师、计算机视觉算法工程师、通信基带算法工程师、信号算法工程师、射频/通信算法工程师、自然语言算法工程师、数据挖掘算法工程师、搜索算法工程师、控制算法工程师(云台算法工程师,飞控算法工程师,机器人控制算法)、导航算法工程师( @之介 感谢补充)、其他【其他一切需要复杂算法的行业】 专业要求:计算机、电子、通信、数学等相关专业; 学历要求:本科及其以上的学历,大多数是硕士学历及其以上; 语言要求:英语要求是熟练,基本上能阅读国外专业书刊,做这一行经常要读论文; 必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。 算法工程师的技能树(不同方向差异较大,此处仅供参考) 1 机器学习 2 大数据处理:熟悉至少一个分布式计算框架Hadoop/Spark/Storm/ map-reduce/MPI 3 数据挖掘 4 扎实的数学功底 5 至少熟悉C/C++或者Java,熟悉至少一门编程语言例如java/python/R 加分项:具有较为丰富的项目实践经验(不是水论文的哪种) 二、算法工程师大致分类与技术要求 (一)图像算法/计算机视觉工程师类 包括 图像算法工程师,图像处理工程师,音/视频处理算法工程师,计算机视觉工程师 要求 l 专业:计算机、数学、统计学相关专业; l 技术领域:机器学习,模式识别 l 技术要求: (1) 精通DirectX HLSL和OpenGL GLSL等shader语言,熟悉常见图像处理算法GPU实现及优化; (2) 语言:精通C/C++; (3) 工具:Matlab数学软件,CUDA运算平台,VTK图像图形开源软件【医学领域:ITK,医学图像处理软件包】 (4) 熟悉OpenCV/OpenGL/Caffe等常用开源库; (5) 有人脸识别,行人检测,视频分析,三维建模,动态跟踪,车识别,目标检测跟踪识别经历的人优先考虑; (6) 熟悉基于GPU的算法设计与优化和并行优化经验者优先; (7) 【音/视频领域】熟悉H.264等视频编解码标准和FFMPEG,熟悉rtmp等流媒体传输协议,熟悉视频和音频解码算法,研究各种多媒体文件格式,GPU加速; 应用领域: (1) 互联网:如美颜app (2) 医学领域:如临床医学图像 (3) 汽车领域 (4) 人工智能 相关术语: (1) OCR:OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程 (2) Matlab:商业数学软件; (3) CUDA: (Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台(由ISA和GPU构成)。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题 (4) OpenCL: OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。 (5) OpenCV:开源计算机视觉库;OpenGL:开源图形库;Caffe:是一个清晰,可读性高,快速的深度学习框架。 (6) CNN:(深度学习)卷积神经网络(Convolutional Neural Network)CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。 (7) 开源库:指的是计算机行业中对所有人开发的代码库,所有人均可以使用并改进代码算法。 (二)机器学习工程师 包括 机器学习工程师 要求 l 专业:计算机、数学、统计学相关专业; l 技术领域:人工智能,机器学习 l 技术要求: (1) 熟悉Hadoop/Hive以及Map-Reduce计算模式,熟悉Spark、Shark等尤佳; (2) 大数据挖掘; (3) 高性能、高并发的机器学习、数据挖掘方法及架构的研发; 应用领域: (1)人工智能,比如各类仿真、拟人应用,如机器人 (2)医疗用于各类拟合预测 (3)金融高频交易 (4)互联网数据挖掘、关联推荐 (5)无人汽车,无人机 相关术语: (1) Map-Reduce:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。 (三)自然语言处理工程师 包括 自然语言处理工程师 要求 l 专业:计算机相关专业; l 技术领域:文本数据库 l 技术要求: (1) 熟悉中文分词标注、文本分类、语言模型、实体识别、知识图谱抽取和推理、问答系统设计、深度问答等NLP 相关算法; (2) 应用NLP、机器学习等技术解决海量UGC的文本相关性; (3) 分词、词性分析、实体识别、新词发现、语义关联等NLP基础性研究与开发; (4) 人工智能,分布式处理Hadoop; (5) 数据结构和算法; 应用领域: 口语输入、书面语输入 、语言分析和理解、语言生成、口语输出技术、话语分析与对话、文献自动处理、多语问题的计算机处理、多模态的计算机处理、信息传输与信息存储 、自然语言处理中的数学方法、语言资源、自然语言处理系统的评测。 相关术语: (2) NLP:人工智能的自然语言处理,NLP (Natural Language Processing) 是人工智能(AI)的一个子领域。NLP涉及领域很多,最令我感兴趣的是“中文自动分词”(Chinese word segmentation):结婚的和尚未结婚的【计算机中却有可能理解为结婚的“和尚“】 (四)射频/通信/信号算法工程师类 包括 3G/4G无线通信算法工程师, 通信基带算法工程师,DSP开发工程师(数字信号处理),射频通信工程师,信号算法工程师 要求 l 专业:计算机、通信相关专业; l 技术领域:2G、3G、4G,BlueTooth(蓝牙),WLAN,无线移动通信, 网络通信基带信号处理 l 技术要求: (1) 了解2G,3G,4G,BlueTooth,WLAN等无线通信相关知识,熟悉现有的通信系统和标准协议,熟悉常用的无线测试设备; (2) 信号处理技术,通信算法; (3) 熟悉同步、均衡、信道译码等算法的基本原理; (4) 【射频部分】熟悉射频前端芯片,扎实的射频微波理论和测试经验,熟练使用射频电路仿真工具(如ADS或MW或Ansoft);熟练使用cadence、altium designer PCB电路设计软件; (5) 有扎实的数学基础,如复变函数、随机过程、数值计算、矩阵论、离散数学 应用领域: 通信 VR【用于快速传输视频图像,例如乐客灵境VR公司招募的通信工程师(数据编码、流数据)】 物联网,车联网 导航,军事,卫星,雷达 相关术语: (1) 基带信号:指的是没有经过调制(进行频谱搬移和变换)的原始电信号。 (2) 基带通信(又称基带传输):指传输基带信号。进行基带传输的系统称为基带传输系统。传输介质的整个信道被一个基带信号占用.基带传输不需要调制解调器,设备化费小,具有速率高和误码率低等优点,.适合短距离的数据传输,传输距离在100米内,在音频市话、计算机网络通信中被广泛采用。如从计算机到监视器、打印机等外设的信号就是基带传输的。大多数的局域网使用基带传输,如以太网、令牌环网。 (3) 射频:射频(RF)是Radio Frequency的缩写,表示可以辐射到空间的电磁频率(电磁波),频率范围从300KHz~300GHz之间(因为其较高的频率使其具有远距离传输能力)。射频简称RF射频就是射频电流,它是一种高频交流变化电磁波的简称。每秒变化小于1000次的交流电称为低频电流,大于10000次的称为高频电流,而射频就是这样一种高频电流。高频(大于10K);射频(300K-300G)是高频的较高频段;微波频段(300M-300G)又是射频的较高频段。【有线电视就是用射频传输方式】 (4) DSP:数字信号处理,也指数字信号处理芯片 (五)数据挖掘算法工程师类 包括 推荐算法工程师,数据挖掘算法工程师 要求 l 专业:计算机、通信、应用数学、金融数学、模式识别、人工智能; l 技术领域:机器学习,数据挖掘 l 技术要求: (1) 熟悉常用机器学习和数据挖掘算法,包括但不限于决策树、Kmeans、SVM、线性回归、逻辑回归以及神经网络等算法; (2) 熟练使用SQL、Matlab、Python等工具优先; (3) 对Hadoop、Spark、Storm等大规模数据存储与运算平台有实践经验【均为分布式计算框架】 (4) 数学基础要好,如高数,统计学,数据结构 l 加分项:数据挖掘建模大赛; 应用领域 (1) 个性化推荐 (2) 广告投放 (3) 大数据分析 相关术语 Map-Reduce:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。 (六)搜索算法工程师 要求 l 技术领域:自然语言 l 技术要求: (1) 数据结构,海量数据处理、高性能计算、大规模分布式系统开发 (2) hadoop、lucene (3) 精通Lucene/Solr/Elastic Search等技术,并有二次开发经验 (4) 精通Lucene/Solr/Elastic Search等技术,并有二次开发经验; (5) 精通倒排索引、全文检索、分词、排序等相关技术; (6) 熟悉Java,熟悉Spring、MyBatis、Netty等主流框架; (7) 优秀的数据库设计和优化能力,精通MySQL数据库应用 ; (8) 了解推荐引擎和数据挖掘和机器学习的理论知识,有大型搜索应用的开发经验者优先。 (七)控制算法工程师类 包括了云台控制算法,飞控控制算法,机器人控制算法 要求 l 专业:计算机,电子信息工程,航天航空,自动化 l 技术要求: (1) 精通自动控制原理(如PID)、现代控制理论,精通组合导航原理,姿态融合算法,电机驱动,电机驱动 (2) 卡尔曼滤波,熟悉状态空间分析法对控制系统进行数学模型建模、分析调试; l 加分项:有电子设计大赛,机器人比赛,robocon等比赛经验,有硬件设计的基础; 应用领域 (1)医疗/工业机械设备 (2)工业机器人 (3)机器人 (4)无人机飞控、云台控制等 (八)导航算法工程师 要求 l 专业:计算机,电子信息工程,航天航空,自动化 l 技术要求(以公司职位JD为例) 公司一(1)精通惯性导航、激光导航、雷达导航等工作原理; (2)精通组合导航算法设计、精通卡尔曼滤波算法、精通路径规划算法; (3)具备导航方案设计和实现的工程经验; (4)熟悉C/C++语言、熟悉至少一种嵌入式系统开发、熟悉Matlab工具; 公司二(1)熟悉基于视觉信息的SLAM、定位、导航算法,有1年以上相关的科研或项目经历; (2)熟悉惯性导航算法,熟悉IMU与视觉信息的融合; 应用领域 无人机、机器人等。

小哇 2019-12-02 01:21:12 0 浏览量 回答数 0

回答

一、算法工程师简介 (通常是月薪15k以上,年薪18万以上,只是一个概数,具体薪资可以到招聘网站如拉钩,猎聘网上看看) 算法工程师目前是一个高端也是相对紧缺的职位; 算法工程师包括 音/视频算法工程师(通常统称为语音/视频/图形开发工程师)、图像处理算法工程师、计算机视觉算法工程师、通信基带算法工程师、信号算法工程师、射频/通信算法工程师、自然语言算法工程师、数据挖掘算法工程师、搜索算法工程师、控制算法工程师(云台算法工程师,飞控算法工程师,机器人控制算法)、导航算法工程师( @之介 感谢补充)、其他【其他一切需要复杂算法的行业】 专业要求:计算机、电子、通信、数学等相关专业; 学历要求:本科及其以上的学历,大多数是硕士学历及其以上; 语言要求:英语要求是熟练,基本上能阅读国外专业书刊,做这一行经常要读论文; 必须掌握计算机相关知识,熟练使用仿真工具MATLAB等,必须会一门编程语言。 算法工程师的技能树(不同方向差异较大,此处仅供参考) 1 机器学习 2 大数据处理:熟悉至少一个分布式计算框架Hadoop/Spark/Storm/ map-reduce/MPI 3 数据挖掘 4 扎实的数学功底 5 至少熟悉C/C++或者Java,熟悉至少一门编程语言例如java/python/R 加分项:具有较为丰富的项目实践经验(不是水论文的哪种) 二、算法工程师大致分类与技术要求 (一)图像算法/计算机视觉工程师类 包括 图像算法工程师,图像处理工程师,音/视频处理算法工程师,计算机视觉工程师 要求 l 专业:计算机、数学、统计学相关专业; l 技术领域:机器学习,模式识别 l 技术要求: (1) 精通DirectX HLSL和OpenGL GLSL等shader语言,熟悉常见图像处理算法GPU实现及优化; (2) 语言:精通C/C++; (3) 工具:Matlab数学软件,CUDA运算平台,VTK图像图形开源软件【医学领域:ITK,医学图像处理软件包】 (4) 熟悉OpenCV/OpenGL/Caffe等常用开源库; (5) 有人脸识别,行人检测,视频分析,三维建模,动态跟踪,车识别,目标检测跟踪识别经历的人优先考虑; (6) 熟悉基于GPU的算法设计与优化和并行优化经验者优先; (7) 【音/视频领域】熟悉H.264等视频编解码标准和FFMPEG,熟悉rtmp等流媒体传输协议,熟悉视频和音频解码算法,研究各种多媒体文件格式,GPU加速; 应用领域: (1) 互联网:如美颜app (2) 医学领域:如临床医学图像 (3) 汽车领域 (4) 人工智能 相关术语: (1) OCR:OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程 (2) Matlab:商业数学软件; (3) CUDA: (Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台(由ISA和GPU构成)。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题 (4) OpenCL: OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。 (5) OpenCV:开源计算机视觉库;OpenGL:开源图形库;Caffe:是一个清晰,可读性高,快速的深度学习框架。 (6) CNN:(深度学习)卷积神经网络(Convolutional Neural Network)CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。 (7) 开源库:指的是计算机行业中对所有人开发的代码库,所有人均可以使用并改进代码算法。 (二)机器学习工程师 包括 机器学习工程师 要求 l 专业:计算机、数学、统计学相关专业; l 技术领域:人工智能,机器学习 l 技术要求: (1) 熟悉Hadoop/Hive以及Map-Reduce计算模式,熟悉Spark、Shark等尤佳; (2) 大数据挖掘; (3) 高性能、高并发的机器学习、数据挖掘方法及架构的研发; 应用领域: (1)人工智能,比如各类仿真、拟人应用,如机器人 (2)医疗用于各类拟合预测 (3)金融高频交易 (4)互联网数据挖掘、关联推荐 (5)无人汽车,无人机 相关术语: (1) Map-Reduce:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。 (三)自然语言处理工程师 包括 自然语言处理工程师 要求 l 专业:计算机相关专业; l 技术领域:文本数据库 l 技术要求: (1) 熟悉中文分词标注、文本分类、语言模型、实体识别、知识图谱抽取和推理、问答系统设计、深度问答等NLP 相关算法; (2) 应用NLP、机器学习等技术解决海量UGC的文本相关性; (3) 分词、词性分析、实体识别、新词发现、语义关联等NLP基础性研究与开发; (4) 人工智能,分布式处理Hadoop; (5) 数据结构和算法; 应用领域: 口语输入、书面语输入 、语言分析和理解、语言生成、口语输出技术、话语分析与对话、文献自动处理、多语问题的计算机处理、多模态的计算机处理、信息传输与信息存储 、自然语言处理中的数学方法、语言资源、自然语言处理系统的评测。 相关术语: (2) NLP:人工智能的自然语言处理,NLP (Natural Language Processing) 是人工智能(AI)的一个子领域。NLP涉及领域很多,最令我感兴趣的是“中文自动分词”(Chinese word segmentation):结婚的和尚未结婚的【计算机中却有可能理解为结婚的“和尚“】 (四)射频/通信/信号算法工程师类 包括 3G/4G无线通信算法工程师, 通信基带算法工程师,DSP开发工程师(数字信号处理),射频通信工程师,信号算法工程师 要求 l 专业:计算机、通信相关专业; l 技术领域:2G、3G、4G,BlueTooth(蓝牙),WLAN,无线移动通信, 网络通信基带信号处理 l 技术要求: (1) 了解2G,3G,4G,BlueTooth,WLAN等无线通信相关知识,熟悉现有的通信系统和标准协议,熟悉常用的无线测试设备; (2) 信号处理技术,通信算法; (3) 熟悉同步、均衡、信道译码等算法的基本原理; (4) 【射频部分】熟悉射频前端芯片,扎实的射频微波理论和测试经验,熟练使用射频电路仿真工具(如ADS或MW或Ansoft);熟练使用cadence、altium designer PCB电路设计软件; (5) 有扎实的数学基础,如复变函数、随机过程、数值计算、矩阵论、离散数学 应用领域: 通信 VR【用于快速传输视频图像,例如乐客灵境VR公司招募的通信工程师(数据编码、流数据)】 物联网,车联网 导航,军事,卫星,雷达 相关术语: (1) 基带信号:指的是没有经过调制(进行频谱搬移和变换)的原始电信号。 (2) 基带通信(又称基带传输):指传输基带信号。进行基带传输的系统称为基带传输系统。传输介质的整个信道被一个基带信号占用.基带传输不需要调制解调器,设备化费小,具有速率高和误码率低等优点,.适合短距离的数据传输,传输距离在100米内,在音频市话、计算机网络通信中被广泛采用。如从计算机到监视器、打印机等外设的信号就是基带传输的。大多数的局域网使用基带传输,如以太网、令牌环网。 (3) 射频:射频(RF)是Radio Frequency的缩写,表示可以辐射到空间的电磁频率(电磁波),频率范围从300KHz~300GHz之间(因为其较高的频率使其具有远距离传输能力)。射频简称RF射频就是射频电流,它是一种高频交流变化电磁波的简称。每秒变化小于1000次的交流电称为低频电流,大于10000次的称为高频电流,而射频就是这样一种高频电流。高频(大于10K);射频(300K-300G)是高频的较高频段;微波频段(300M-300G)又是射频的较高频段。【有线电视就是用射频传输方式】 (4) DSP:数字信号处理,也指数字信号处理芯片 (五)数据挖掘算法工程师类 包括 推荐算法工程师,数据挖掘算法工程师 要求 l 专业:计算机、通信、应用数学、金融数学、模式识别、人工智能; l 技术领域:机器学习,数据挖掘 l 技术要求: (1) 熟悉常用机器学习和数据挖掘算法,包括但不限于决策树、Kmeans、SVM、线性回归、逻辑回归以及神经网络等算法; (2) 熟练使用SQL、Matlab、Python等工具优先; (3) 对Hadoop、Spark、Storm等大规模数据存储与运算平台有实践经验【均为分布式计算框架】 (4) 数学基础要好,如高数,统计学,数据结构 l 加分项:数据挖掘建模大赛; 应用领域 (1) 个性化推荐 (2) 广告投放 (3) 大数据分析 相关术语 Map-Reduce:MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。 (六)搜索算法工程师 要求 l 技术领域:自然语言 l 技术要求: (1) 数据结构,海量数据处理、高性能计算、大规模分布式系统开发 (2) hadoop、lucene (3) 精通Lucene/Solr/Elastic Search等技术,并有二次开发经验 (4) 精通Lucene/Solr/Elastic Search等技术,并有二次开发经验; (5) 精通倒排索引、全文检索、分词、排序等相关技术; (6) 熟悉Java,熟悉Spring、MyBatis、Netty等主流框架; (7) 优秀的数据库设计和优化能力,精通MySQL数据库应用 ; (8) 了解推荐引擎和数据挖掘和机器学习的理论知识,有大型搜索应用的开发经验者优先。 (七)控制算法工程师类 包括了云台控制算法,飞控控制算法,机器人控制算法 要求 l 专业:计算机,电子信息工程,航天航空,自动化 l 技术要求: (1) 精通自动控制原理(如PID)、现代控制理论,精通组合导航原理,姿态融合算法,电机驱动,电机驱动 (2) 卡尔曼滤波,熟悉状态空间分析法对控制系统进行数学模型建模、分析调试; l 加分项:有电子设计大赛,机器人比赛,robocon等比赛经验,有硬件设计的基础; 应用领域 (1)医疗/工业机械设备 (2)工业机器人 (3)机器人 (4)无人机飞控、云台控制等 (八)导航算法工程师 要求 l 专业:计算机,电子信息工程,航天航空,自动化 l 技术要求(以公司职位JD为例) 公司一(1)精通惯性导航、激光导航、雷达导航等工作原理; (2)精通组合导航算法设计、精通卡尔曼滤波算法、精通路径规划算法; (3)具备导航方案设计和实现的工程经验; (4)熟悉C/C++语言、熟悉至少一种嵌入式系统开发、熟悉Matlab工具; 公司二(1)熟悉基于视觉信息的SLAM、定位、导航算法,有1年以上相关的科研或项目经历; (2)熟悉惯性导航算法,熟悉IMU与视觉信息的融合; 应用领域 无人机、机器人等。

琴瑟 2019-12-02 01:21:11 0 浏览量 回答数 0

问题

MaxCompute百问集锦(持续更新20171011)

隐林 2019-12-01 20:19:23 38430 浏览量 回答数 18

问题

投递日志到MaxCompute有什么意义?

轩墨 2019-12-01 21:57:02 1275 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 投递日志到 MaxCompute 是日志服务的一个功能,能够帮助您最大化数据价值。您可以自己决定对某个日志库是否启用该功能。一旦启用该功能,日志服务后台会定时把写入到该日志库内的日志投递到 MaxCompute 对应的表格中。 使用限制 数加控制台创建、修改投递配置必须由主账号完成,不支持子账号操作。 投递MaxCompute是批量任务,请谨慎设置分区列:保证一个同步任务内处理的数据分区数小于512个;用作分区列的字段值不能包括/等MaxCompute保留字段 。配置细节请参考下文投递配置说明。 不支持海外Region的MaxCompute投递,海外Region的MaxCompute请使用dataworks进行数据同步。国内Region投递支持如下: 日志服务Region MaxCompute Region 华北1 华东2 华北2 华北2、华东2 华北3 华东2 华北5 华东2 华东1 华东2 华东2 华东2 华南1 华南1、华东2 香港 华东2 功能优势 日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势: 使用便捷 您只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。 避免重复收集工作 由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。 充分复用日志服务内的日志分类管理工作 用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。 说明 一般情况下日志数据在写入Logstore后的1个小时导入到MaxCompute,您可以在控制台投递任务管理查看导入状态。导入成功后即可在MaxCompute内查看到相关日志数据。判断数据是否已完全投递请参考文档。 结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。 配置流程 举例日志服务的一条日志如下: 16年01月27日20时50分13秒 10.10.*.* ip:10.10.*.* status:200 thread:414579208 time:27/Jan/2016:20:50:13 +0800 url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 user-agent:aliyun-sdk-java 日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。 步骤1 初始化数加平台 在日志服务的控制台Logstore列表单击日志投递列的MaxCompute。 自动跳转到初始化数加平台的页面。MaxCompute默认为按量付费模式,具体参见MaxCompute文档说明。 查看服务协议和条款后单击确定,初始化数加平台。 初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。 步骤2 数据模型映射在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。您可以参考日志服务日志数据结构了解数据结构。 将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系: MaxCompute 列类型 MaxCompute 列名(可自定义) MaxCompute 列类型(可自定义) 日志服务字段名(投递配置里填写) 日志服务字段类型 日志服务字段语义 数据列 log_source string __source__ 系统保留字段 日志来源的机器 IP。 log_time bigint __time__ 系统保留字段 日志的 Unix 时间戳(是从1970 年 1 月 1 日开始所经过的秒数),由用户日志的 time 字段计算得到。 log_topic string __topic__ 系统保留字段 日志主题。 time string time 日志内容字段 解析自日志。 ip string ip 日志内容字段 解析自日志。 thread string thread 日志内容字段 解析自日志。 log_extract_others string __extract_others__ 系统保留字段 未在配置中进行映射的其他日志内字段会通过 key-value 序列化到json,该 json 是一层结构,不支持字段内部 json 嵌套。 分区列 log_partition_time string __partition_time__ 系统保留字段 由日志的 time 字段对齐计算而得,分区粒度可配置,在配置项部分详述。 status string status 日志内容字段 解析自日志,该字段取值应该是可以枚举的,保证分区数目不会超出上限。 MaxCompute 表至少包含一个数据列、一个分区列。 系统保留字段中建议使用 __partition_time__,__source__,__topic__。 MaxCompute 单表有分区数目 6 万的限制,分区数超出后无法再写入数据,所以日志服务导入 MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。 系统保留字段 __extract_others__ 历史上曾用名 _extract_others_,填写后者也是兼容的。 MaxCompute 分区列的值不支持”/“等特殊字符,这些是 MaxCompute 的保留字段。 MaxCompute 分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。 步骤3 配置投递规则 开启投递。 初始化数加平台之后,根据页面提示进入LogHub —— 数据投递页面,选择需要投递的Logstore,并单击开启投递。 您也可以在MaxCompute(原ODPS)投递管理页面选择需要投递的Logstore,并单击开启投递以进入LogHub —— 数据投递页面。 图 1. 开启投递 配置投递规则。 在 LogHub —— 数据投递页面配置 字段关联等相关内容。 图 2. 配置投递规则 配置项含义: 参数 语义 投递名称 自定义一个投递的名称,方便后续管理。 MaxCompute Project MaxCompute项目名称,该项默认为新创建的Project,如果已经是MaxCompute老客户,可以下拉选择已创建其他Project。 MaxCompute Table MaxCompute表名称,请输入自定义的新建的MaxCompute表名称或者选择已有的MaxCompute表。 MaxCompute 普通列 按序,左边填写与MaxCompute表数据列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 MaxCompute 分区列 按序,左边填写与MaxCompute表分区列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 分区时间格式 __partition_time__输出的日期格式,参考 Java SimpleDateFormat。 导入MaxCompute间隔 MaxCompute数据投递间隔,默认1800,单位:秒。 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。 参考信息 __partition_time__ 格式 将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。 __partition_time__ 是根据日志time字段值计算得到(不是日志写入服务端时间,也不是日志投递时间),结合分区时间格式,向下取整(为避免触发MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐)计算出日期作为分区列。 举例来说,日志提取的time字段是“27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下: 导入MaxCompute间隔 分区时间格式 __partition_time__ 1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00 1800 yyyy-MM-dd HH:mm 2016-01-27 20:30 1800 yyyyMMdd 20160127 3600 yyyyMMddHHmm 201601272000 3600 yyyy_MM_dd_HH 2016_01_27_20 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。 以上分区时间格式是测试通过的样例,您也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。 __partition_time__ 使用方法 使用MaxCompute的字符串比较筛选数据,可以避免全表扫描。比如查询2016年1月26日一天内日志数据: select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27"; __extract_others__使用方法 log_extract_others为一个json字符串,如果想获取该字段的user-agent内容,可以进行如下查询: select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10; 说明 get_json_object是MaxCompute提供的标准UDF。请联系MaxCompute团队开通使用该标准UDF的权限。 示例供参考,请以MaxCompute产品建议为最终标准。 其他操作 编辑投递配置 在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。 投递任务管理 在启动投递功能后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考管理日志投递任务。 如果投递任务出现错误,控制台上会显示相应的错误信息: 错误信息 建议方案 MaxCompute项目空间不存在 在MaxCompute控制台中确认配置的MaxCompute项目是否存在,如果不存在则需要重新创建或配置。 MaxCompute表不存在 在MaxCompute控制台中确认配置的MaxCompute表是否存在,如果不存在则需要重新创建或配置。 MaxCompute项目空间或表没有向日志服务授权 在MaxCompute控制台中确认授权给日志服务账号的权限是否还存在,如果不存在则需要重新添加上相应权限。 MaxCompute错误 显示投递任务收到的MaxCompute错误,请参考MaxCompute相关文档或联系MaxCompute团队解决。日志服务会自动重试最近两天时间的失败任务。 日志服务导入字段配置无法匹配MaxCompute表的列 重新配置MaxCompute表格的列与日志服务数据字段的映射配置。 当投递任务发生错误时,请查看错误信息,问题解决后可以通过云控制台中“日志投递任务管理”或SDK来重试失败任务。 MaxCompute中消费日志 MaxCompute用户表中示例数据如下: | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ | 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ 同时,我们推荐您直接使用已经与MaxCompute绑定的大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。 授予MaxCompute数据投递权限 如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。 在MaxCompute项目空间下添加用户: ADD USER aliyun$shennong_open@aliyun.com; shennong_open@aliyun.com 是日志服务系统账号(请不要用自己的账号),授权目的是为了能将数据写入到MaxCompute MaxCompute项目空间Read/List权限授予: GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com; MaxCompute项目空间的表Describe/Alter/Update权限授予: GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com; 确认MaxCompute授权是否成功: SHOW GRANTS FOR aliyun$shennong_open@aliyun.com; A projects/{ODPS_PROJECT_NAME}: List | Read A projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

2019-12-01 23:11:17 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 投递日志到 MaxCompute 是日志服务的一个功能,能够帮助您最大化数据价值。您可以自己决定对某个日志库是否启用该功能。一旦启用该功能,日志服务后台会定时把写入到该日志库内的日志投递到 MaxCompute 对应的表格中。 使用限制 数加控制台创建、修改投递配置必须由主账号完成,不支持子账号操作。 投递MaxCompute是批量任务,请谨慎设置分区列:保证一个同步任务内处理的数据分区数小于512个;用作分区列的字段值不能包括/等MaxCompute保留字段 。配置细节请参考下文投递配置说明。 不支持海外Region的MaxCompute投递,海外Region的MaxCompute请使用dataworks进行数据同步。国内Region投递支持如下: 日志服务Region MaxCompute Region 华北1 华东2 华北2 华北2、华东2 华北3 华东2 华北5 华东2 华东1 华东2 华东2 华东2 华南1 华南1、华东2 香港 华东2 功能优势 日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势: 使用便捷 您只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。 避免重复收集工作 由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。 充分复用日志服务内的日志分类管理工作 用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。 说明 一般情况下日志数据在写入Logstore后的1个小时导入到MaxCompute,您可以在控制台投递任务管理查看导入状态。导入成功后即可在MaxCompute内查看到相关日志数据。判断数据是否已完全投递请参考文档。 结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。 配置流程 举例日志服务的一条日志如下: 16年01月27日20时50分13秒 10.10.*.* ip:10.10.*.* status:200 thread:414579208 time:27/Jan/2016:20:50:13 +0800 url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 user-agent:aliyun-sdk-java 日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。 步骤1 初始化数加平台 在日志服务的控制台Logstore列表单击日志投递列的MaxCompute。 自动跳转到初始化数加平台的页面。MaxCompute默认为按量付费模式,具体参见MaxCompute文档说明。 查看服务协议和条款后单击确定,初始化数加平台。 初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。 步骤2 数据模型映射在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。您可以参考日志服务日志数据结构了解数据结构。 将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系: MaxCompute 列类型 MaxCompute 列名(可自定义) MaxCompute 列类型(可自定义) 日志服务字段名(投递配置里填写) 日志服务字段类型 日志服务字段语义 数据列 log_source string __source__ 系统保留字段 日志来源的机器 IP。 log_time bigint __time__ 系统保留字段 日志的 Unix 时间戳(是从1970 年 1 月 1 日开始所经过的秒数),由用户日志的 time 字段计算得到。 log_topic string __topic__ 系统保留字段 日志主题。 time string time 日志内容字段 解析自日志。 ip string ip 日志内容字段 解析自日志。 thread string thread 日志内容字段 解析自日志。 log_extract_others string __extract_others__ 系统保留字段 未在配置中进行映射的其他日志内字段会通过 key-value 序列化到json,该 json 是一层结构,不支持字段内部 json 嵌套。 分区列 log_partition_time string __partition_time__ 系统保留字段 由日志的 time 字段对齐计算而得,分区粒度可配置,在配置项部分详述。 status string status 日志内容字段 解析自日志,该字段取值应该是可以枚举的,保证分区数目不会超出上限。 MaxCompute 表至少包含一个数据列、一个分区列。 系统保留字段中建议使用 __partition_time__,__source__,__topic__。 MaxCompute 单表有分区数目 6 万的限制,分区数超出后无法再写入数据,所以日志服务导入 MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。 系统保留字段 __extract_others__ 历史上曾用名 _extract_others_,填写后者也是兼容的。 MaxCompute 分区列的值不支持”/“等特殊字符,这些是 MaxCompute 的保留字段。 MaxCompute 分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。 步骤3 配置投递规则 开启投递。 初始化数加平台之后,根据页面提示进入LogHub —— 数据投递页面,选择需要投递的Logstore,并单击开启投递。 您也可以在MaxCompute(原ODPS)投递管理页面选择需要投递的Logstore,并单击开启投递以进入LogHub —— 数据投递页面。 图 1. 开启投递 配置投递规则。 在 LogHub —— 数据投递页面配置 字段关联等相关内容。 图 2. 配置投递规则 配置项含义: 参数 语义 投递名称 自定义一个投递的名称,方便后续管理。 MaxCompute Project MaxCompute项目名称,该项默认为新创建的Project,如果已经是MaxCompute老客户,可以下拉选择已创建其他Project。 MaxCompute Table MaxCompute表名称,请输入自定义的新建的MaxCompute表名称或者选择已有的MaxCompute表。 MaxCompute 普通列 按序,左边填写与MaxCompute表数据列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 MaxCompute 分区列 按序,左边填写与MaxCompute表分区列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 分区时间格式 __partition_time__输出的日期格式,参考 Java SimpleDateFormat。 导入MaxCompute间隔 MaxCompute数据投递间隔,默认1800,单位:秒。 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。 参考信息 __partition_time__ 格式 将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。 __partition_time__ 是根据日志time字段值计算得到(不是日志写入服务端时间,也不是日志投递时间),结合分区时间格式,向下取整(为避免触发MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐)计算出日期作为分区列。 举例来说,日志提取的time字段是“27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下: 导入MaxCompute间隔 分区时间格式 __partition_time__ 1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00 1800 yyyy-MM-dd HH:mm 2016-01-27 20:30 1800 yyyyMMdd 20160127 3600 yyyyMMddHHmm 201601272000 3600 yyyy_MM_dd_HH 2016_01_27_20 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。 以上分区时间格式是测试通过的样例,您也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。 __partition_time__ 使用方法 使用MaxCompute的字符串比较筛选数据,可以避免全表扫描。比如查询2016年1月26日一天内日志数据: select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27"; __extract_others__使用方法 log_extract_others为一个json字符串,如果想获取该字段的user-agent内容,可以进行如下查询: select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10; 说明 get_json_object是MaxCompute提供的标准UDF。请联系MaxCompute团队开通使用该标准UDF的权限。 示例供参考,请以MaxCompute产品建议为最终标准。 其他操作 编辑投递配置 在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。 投递任务管理 在启动投递功能后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考管理日志投递任务。 如果投递任务出现错误,控制台上会显示相应的错误信息: 错误信息 建议方案 MaxCompute项目空间不存在 在MaxCompute控制台中确认配置的MaxCompute项目是否存在,如果不存在则需要重新创建或配置。 MaxCompute表不存在 在MaxCompute控制台中确认配置的MaxCompute表是否存在,如果不存在则需要重新创建或配置。 MaxCompute项目空间或表没有向日志服务授权 在MaxCompute控制台中确认授权给日志服务账号的权限是否还存在,如果不存在则需要重新添加上相应权限。 MaxCompute错误 显示投递任务收到的MaxCompute错误,请参考MaxCompute相关文档或联系MaxCompute团队解决。日志服务会自动重试最近两天时间的失败任务。 日志服务导入字段配置无法匹配MaxCompute表的列 重新配置MaxCompute表格的列与日志服务数据字段的映射配置。 当投递任务发生错误时,请查看错误信息,问题解决后可以通过云控制台中“日志投递任务管理”或SDK来重试失败任务。 MaxCompute中消费日志 MaxCompute用户表中示例数据如下: | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ | 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ 同时,我们推荐您直接使用已经与MaxCompute绑定的大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。 授予MaxCompute数据投递权限 如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。 在MaxCompute项目空间下添加用户: ADD USER aliyun$shennong_open@aliyun.com; shennong_open@aliyun.com 是日志服务系统账号(请不要用自己的账号),授权目的是为了能将数据写入到MaxCompute MaxCompute项目空间Read/List权限授予: GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com; MaxCompute项目空间的表Describe/Alter/Update权限授予: GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com; 确认MaxCompute授权是否成功: SHOW GRANTS FOR aliyun$shennong_open@aliyun.com; A projects/{ODPS_PROJECT_NAME}: List | Read A projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

2019-12-01 23:11:17 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 投递日志到 MaxCompute 是日志服务的一个功能,能够帮助您最大化数据价值。您可以自己决定对某个日志库是否启用该功能。一旦启用该功能,日志服务后台会定时把写入到该日志库内的日志投递到 MaxCompute 对应的表格中。 使用限制 数加控制台创建、修改投递配置必须由主账号完成,不支持子账号操作。 投递MaxCompute是批量任务,请谨慎设置分区列:保证一个同步任务内处理的数据分区数小于512个;用作分区列的字段值不能包括/等MaxCompute保留字段 。配置细节请参考下文投递配置说明。 不支持海外Region的MaxCompute投递,海外Region的MaxCompute请使用dataworks进行数据同步。国内Region投递支持如下: 日志服务Region MaxCompute Region 华北1 华东2 华北2 华北2、华东2 华北3 华东2 华北5 华东2 华东1 华东2 华东2 华东2 华南1 华南1、华东2 香港 华东2 功能优势 日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势: 使用便捷 您只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。 避免重复收集工作 由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。 充分复用日志服务内的日志分类管理工作 用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。 说明 一般情况下日志数据在写入Logstore后的1个小时导入到MaxCompute,您可以在控制台投递任务管理查看导入状态。导入成功后即可在MaxCompute内查看到相关日志数据。判断数据是否已完全投递请参考文档。 结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。 配置流程 举例日志服务的一条日志如下: 16年01月27日20时50分13秒 10.10.*.* ip:10.10.*.* status:200 thread:414579208 time:27/Jan/2016:20:50:13 +0800 url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 user-agent:aliyun-sdk-java 日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。 步骤1 初始化数加平台 在日志服务的控制台Logstore列表单击日志投递列的MaxCompute。 自动跳转到初始化数加平台的页面。MaxCompute默认为按量付费模式,具体参见MaxCompute文档说明。 查看服务协议和条款后单击确定,初始化数加平台。 初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。 步骤2 数据模型映射在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。您可以参考日志服务日志数据结构了解数据结构。 将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系: MaxCompute 列类型 MaxCompute 列名(可自定义) MaxCompute 列类型(可自定义) 日志服务字段名(投递配置里填写) 日志服务字段类型 日志服务字段语义 数据列 log_source string __source__ 系统保留字段 日志来源的机器 IP。 log_time bigint __time__ 系统保留字段 日志的 Unix 时间戳(是从1970 年 1 月 1 日开始所经过的秒数),由用户日志的 time 字段计算得到。 log_topic string __topic__ 系统保留字段 日志主题。 time string time 日志内容字段 解析自日志。 ip string ip 日志内容字段 解析自日志。 thread string thread 日志内容字段 解析自日志。 log_extract_others string __extract_others__ 系统保留字段 未在配置中进行映射的其他日志内字段会通过 key-value 序列化到json,该 json 是一层结构,不支持字段内部 json 嵌套。 分区列 log_partition_time string __partition_time__ 系统保留字段 由日志的 time 字段对齐计算而得,分区粒度可配置,在配置项部分详述。 status string status 日志内容字段 解析自日志,该字段取值应该是可以枚举的,保证分区数目不会超出上限。 MaxCompute 表至少包含一个数据列、一个分区列。 系统保留字段中建议使用 __partition_time__,__source__,__topic__。 MaxCompute 单表有分区数目 6 万的限制,分区数超出后无法再写入数据,所以日志服务导入 MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。 系统保留字段 __extract_others__ 历史上曾用名 _extract_others_,填写后者也是兼容的。 MaxCompute 分区列的值不支持”/“等特殊字符,这些是 MaxCompute 的保留字段。 MaxCompute 分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。 步骤3 配置投递规则 开启投递。 初始化数加平台之后,根据页面提示进入LogHub —— 数据投递页面,选择需要投递的Logstore,并单击开启投递。 您也可以在MaxCompute(原ODPS)投递管理页面选择需要投递的Logstore,并单击开启投递以进入LogHub —— 数据投递页面。 图 1. 开启投递 配置投递规则。 在 LogHub —— 数据投递页面配置 字段关联等相关内容。 图 2. 配置投递规则 配置项含义: 参数 语义 投递名称 自定义一个投递的名称,方便后续管理。 MaxCompute Project MaxCompute项目名称,该项默认为新创建的Project,如果已经是MaxCompute老客户,可以下拉选择已创建其他Project。 MaxCompute Table MaxCompute表名称,请输入自定义的新建的MaxCompute表名称或者选择已有的MaxCompute表。 MaxCompute 普通列 按序,左边填写与MaxCompute表数据列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 MaxCompute 分区列 按序,左边填写与MaxCompute表分区列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 分区时间格式 __partition_time__输出的日期格式,参考 Java SimpleDateFormat。 导入MaxCompute间隔 MaxCompute数据投递间隔,默认1800,单位:秒。 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。 参考信息 __partition_time__ 格式 将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。 __partition_time__ 是根据日志time字段值计算得到(不是日志写入服务端时间,也不是日志投递时间),结合分区时间格式,向下取整(为避免触发MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐)计算出日期作为分区列。 举例来说,日志提取的time字段是“27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下: 导入MaxCompute间隔 分区时间格式 __partition_time__ 1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00 1800 yyyy-MM-dd HH:mm 2016-01-27 20:30 1800 yyyyMMdd 20160127 3600 yyyyMMddHHmm 201601272000 3600 yyyy_MM_dd_HH 2016_01_27_20 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。 以上分区时间格式是测试通过的样例,您也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。 __partition_time__ 使用方法 使用MaxCompute的字符串比较筛选数据,可以避免全表扫描。比如查询2016年1月26日一天内日志数据: select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27"; __extract_others__使用方法 log_extract_others为一个json字符串,如果想获取该字段的user-agent内容,可以进行如下查询: select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10; 说明 get_json_object是MaxCompute提供的标准UDF。请联系MaxCompute团队开通使用该标准UDF的权限。 示例供参考,请以MaxCompute产品建议为最终标准。 其他操作 编辑投递配置 在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。 投递任务管理 在启动投递功能后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考管理日志投递任务。 如果投递任务出现错误,控制台上会显示相应的错误信息: 错误信息 建议方案 MaxCompute项目空间不存在 在MaxCompute控制台中确认配置的MaxCompute项目是否存在,如果不存在则需要重新创建或配置。 MaxCompute表不存在 在MaxCompute控制台中确认配置的MaxCompute表是否存在,如果不存在则需要重新创建或配置。 MaxCompute项目空间或表没有向日志服务授权 在MaxCompute控制台中确认授权给日志服务账号的权限是否还存在,如果不存在则需要重新添加上相应权限。 MaxCompute错误 显示投递任务收到的MaxCompute错误,请参考MaxCompute相关文档或联系MaxCompute团队解决。日志服务会自动重试最近两天时间的失败任务。 日志服务导入字段配置无法匹配MaxCompute表的列 重新配置MaxCompute表格的列与日志服务数据字段的映射配置。 当投递任务发生错误时,请查看错误信息,问题解决后可以通过云控制台中“日志投递任务管理”或SDK来重试失败任务。 MaxCompute中消费日志 MaxCompute用户表中示例数据如下: | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ | 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ 同时,我们推荐您直接使用已经与MaxCompute绑定的大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。 授予MaxCompute数据投递权限 如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。 在MaxCompute项目空间下添加用户: ADD USER aliyun$shennong_open@aliyun.com; shennong_open@aliyun.com 是日志服务系统账号(请不要用自己的账号),授权目的是为了能将数据写入到MaxCompute MaxCompute项目空间Read/List权限授予: GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com; MaxCompute项目空间的表Describe/Alter/Update权限授予: GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com; 确认MaxCompute授权是否成功: SHOW GRANTS FOR aliyun$shennong_open@aliyun.com; A projects/{ODPS_PROJECT_NAME}: List | Read A projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

2019-12-01 23:11:16 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 投递日志到 MaxCompute 是日志服务的一个功能,能够帮助您最大化数据价值。您可以自己决定对某个日志库是否启用该功能。一旦启用该功能,日志服务后台会定时把写入到该日志库内的日志投递到 MaxCompute 对应的表格中。 使用限制 数加控制台创建、修改投递配置必须由主账号完成,不支持子账号操作。 投递MaxCompute是批量任务,请谨慎设置分区列:保证一个同步任务内处理的数据分区数小于512个;用作分区列的字段值不能包括/等MaxCompute保留字段 。配置细节请参考下文投递配置说明。 不支持海外Region的MaxCompute投递,海外Region的MaxCompute请使用dataworks进行数据同步。国内Region投递支持如下: 日志服务Region MaxCompute Region 华北1 华东2 华北2 华北2、华东2 华北3 华东2 华北5 华东2 华东1 华东2 华东2 华东2 华南1 华南1、华东2 香港 华东2 功能优势 日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势: 使用便捷 您只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。 避免重复收集工作 由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。 充分复用日志服务内的日志分类管理工作 用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。 说明 一般情况下日志数据在写入Logstore后的1个小时导入到MaxCompute,您可以在控制台投递任务管理查看导入状态。导入成功后即可在MaxCompute内查看到相关日志数据。判断数据是否已完全投递请参考文档。 结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。 配置流程 举例日志服务的一条日志如下: 16年01月27日20时50分13秒 10.10.*.* ip:10.10.*.* status:200 thread:414579208 time:27/Jan/2016:20:50:13 +0800 url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 user-agent:aliyun-sdk-java 日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。 步骤1 初始化数加平台 在日志服务的控制台Logstore列表单击日志投递列的MaxCompute。 自动跳转到初始化数加平台的页面。MaxCompute默认为按量付费模式,具体参见MaxCompute文档说明。 查看服务协议和条款后单击确定,初始化数加平台。 初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。 步骤2 数据模型映射在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。您可以参考日志服务日志数据结构了解数据结构。 将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系: MaxCompute 列类型 MaxCompute 列名(可自定义) MaxCompute 列类型(可自定义) 日志服务字段名(投递配置里填写) 日志服务字段类型 日志服务字段语义 数据列 log_source string __source__ 系统保留字段 日志来源的机器 IP。 log_time bigint __time__ 系统保留字段 日志的 Unix 时间戳(是从1970 年 1 月 1 日开始所经过的秒数),由用户日志的 time 字段计算得到。 log_topic string __topic__ 系统保留字段 日志主题。 time string time 日志内容字段 解析自日志。 ip string ip 日志内容字段 解析自日志。 thread string thread 日志内容字段 解析自日志。 log_extract_others string __extract_others__ 系统保留字段 未在配置中进行映射的其他日志内字段会通过 key-value 序列化到json,该 json 是一层结构,不支持字段内部 json 嵌套。 分区列 log_partition_time string __partition_time__ 系统保留字段 由日志的 time 字段对齐计算而得,分区粒度可配置,在配置项部分详述。 status string status 日志内容字段 解析自日志,该字段取值应该是可以枚举的,保证分区数目不会超出上限。 MaxCompute 表至少包含一个数据列、一个分区列。 系统保留字段中建议使用 __partition_time__,__source__,__topic__。 MaxCompute 单表有分区数目 6 万的限制,分区数超出后无法再写入数据,所以日志服务导入 MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。 系统保留字段 __extract_others__ 历史上曾用名 _extract_others_,填写后者也是兼容的。 MaxCompute 分区列的值不支持”/“等特殊字符,这些是 MaxCompute 的保留字段。 MaxCompute 分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。 步骤3 配置投递规则 开启投递。 初始化数加平台之后,根据页面提示进入LogHub —— 数据投递页面,选择需要投递的Logstore,并单击开启投递。 您也可以在MaxCompute(原ODPS)投递管理页面选择需要投递的Logstore,并单击开启投递以进入LogHub —— 数据投递页面。 图 1. 开启投递 配置投递规则。 在 LogHub —— 数据投递页面配置 字段关联等相关内容。 图 2. 配置投递规则 配置项含义: 参数 语义 投递名称 自定义一个投递的名称,方便后续管理。 MaxCompute Project MaxCompute项目名称,该项默认为新创建的Project,如果已经是MaxCompute老客户,可以下拉选择已创建其他Project。 MaxCompute Table MaxCompute表名称,请输入自定义的新建的MaxCompute表名称或者选择已有的MaxCompute表。 MaxCompute 普通列 按序,左边填写与MaxCompute表数据列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 MaxCompute 分区列 按序,左边填写与MaxCompute表分区列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 分区时间格式 __partition_time__输出的日期格式,参考 Java SimpleDateFormat。 导入MaxCompute间隔 MaxCompute数据投递间隔,默认1800,单位:秒。 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。 参考信息 __partition_time__ 格式 将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。 __partition_time__ 是根据日志time字段值计算得到(不是日志写入服务端时间,也不是日志投递时间),结合分区时间格式,向下取整(为避免触发MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐)计算出日期作为分区列。 举例来说,日志提取的time字段是“27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下: 导入MaxCompute间隔 分区时间格式 __partition_time__ 1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00 1800 yyyy-MM-dd HH:mm 2016-01-27 20:30 1800 yyyyMMdd 20160127 3600 yyyyMMddHHmm 201601272000 3600 yyyy_MM_dd_HH 2016_01_27_20 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。 以上分区时间格式是测试通过的样例,您也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。 __partition_time__ 使用方法 使用MaxCompute的字符串比较筛选数据,可以避免全表扫描。比如查询2016年1月26日一天内日志数据: select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27"; __extract_others__使用方法 log_extract_others为一个json字符串,如果想获取该字段的user-agent内容,可以进行如下查询: select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10; 说明 get_json_object是MaxCompute提供的标准UDF。请联系MaxCompute团队开通使用该标准UDF的权限。 示例供参考,请以MaxCompute产品建议为最终标准。 其他操作 编辑投递配置 在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。 投递任务管理 在启动投递功能后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考管理日志投递任务。 如果投递任务出现错误,控制台上会显示相应的错误信息: 错误信息 建议方案 MaxCompute项目空间不存在 在MaxCompute控制台中确认配置的MaxCompute项目是否存在,如果不存在则需要重新创建或配置。 MaxCompute表不存在 在MaxCompute控制台中确认配置的MaxCompute表是否存在,如果不存在则需要重新创建或配置。 MaxCompute项目空间或表没有向日志服务授权 在MaxCompute控制台中确认授权给日志服务账号的权限是否还存在,如果不存在则需要重新添加上相应权限。 MaxCompute错误 显示投递任务收到的MaxCompute错误,请参考MaxCompute相关文档或联系MaxCompute团队解决。日志服务会自动重试最近两天时间的失败任务。 日志服务导入字段配置无法匹配MaxCompute表的列 重新配置MaxCompute表格的列与日志服务数据字段的映射配置。 当投递任务发生错误时,请查看错误信息,问题解决后可以通过云控制台中“日志投递任务管理”或SDK来重试失败任务。 MaxCompute中消费日志 MaxCompute用户表中示例数据如下: | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ | 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ 同时,我们推荐您直接使用已经与MaxCompute绑定的大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。 授予MaxCompute数据投递权限 如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。 在MaxCompute项目空间下添加用户: ADD USER aliyun$shennong_open@aliyun.com; shennong_open@aliyun.com 是日志服务系统账号(请不要用自己的账号),授权目的是为了能将数据写入到MaxCompute MaxCompute项目空间Read/List权限授予: GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com; MaxCompute项目空间的表Describe/Alter/Update权限授予: GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com; 确认MaxCompute授权是否成功: SHOW GRANTS FOR aliyun$shennong_open@aliyun.com; A projects/{ODPS_PROJECT_NAME}: List | Read A projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

2019-12-01 23:11:15 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 投递日志到 MaxCompute 是日志服务的一个功能,能够帮助您最大化数据价值。您可以自己决定对某个日志库是否启用该功能。一旦启用该功能,日志服务后台会定时把写入到该日志库内的日志投递到 MaxCompute 对应的表格中。 使用限制 数加控制台创建、修改投递配置必须由主账号完成,不支持子账号操作。 投递MaxCompute是批量任务,请谨慎设置分区列:保证一个同步任务内处理的数据分区数小于512个;用作分区列的字段值不能包括/等MaxCompute保留字段 。配置细节请参考下文投递配置说明。 不支持海外Region的MaxCompute投递,海外Region的MaxCompute请使用dataworks进行数据同步。国内Region投递支持如下: 日志服务Region MaxCompute Region 华北1 华东2 华北2 华北2、华东2 华北3 华东2 华北5 华东2 华东1 华东2 华东2 华东2 华南1 华南1、华东2 香港 华东2 功能优势 日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势: 使用便捷 您只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。 避免重复收集工作 由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。 充分复用日志服务内的日志分类管理工作 用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。 说明 一般情况下日志数据在写入Logstore后的1个小时导入到MaxCompute,您可以在控制台投递任务管理查看导入状态。导入成功后即可在MaxCompute内查看到相关日志数据。判断数据是否已完全投递请参考文档。 结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。 配置流程 举例日志服务的一条日志如下: 16年01月27日20时50分13秒 10.10.*.* ip:10.10.*.* status:200 thread:414579208 time:27/Jan/2016:20:50:13 +0800 url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 user-agent:aliyun-sdk-java 日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。 步骤1 初始化数加平台 在日志服务的控制台Logstore列表单击日志投递列的MaxCompute。 自动跳转到初始化数加平台的页面。MaxCompute默认为按量付费模式,具体参见MaxCompute文档说明。 查看服务协议和条款后单击确定,初始化数加平台。 初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。 步骤2 数据模型映射在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。您可以参考日志服务日志数据结构了解数据结构。 将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系: MaxCompute 列类型 MaxCompute 列名(可自定义) MaxCompute 列类型(可自定义) 日志服务字段名(投递配置里填写) 日志服务字段类型 日志服务字段语义 数据列 log_source string __source__ 系统保留字段 日志来源的机器 IP。 log_time bigint __time__ 系统保留字段 日志的 Unix 时间戳(是从1970 年 1 月 1 日开始所经过的秒数),由用户日志的 time 字段计算得到。 log_topic string __topic__ 系统保留字段 日志主题。 time string time 日志内容字段 解析自日志。 ip string ip 日志内容字段 解析自日志。 thread string thread 日志内容字段 解析自日志。 log_extract_others string __extract_others__ 系统保留字段 未在配置中进行映射的其他日志内字段会通过 key-value 序列化到json,该 json 是一层结构,不支持字段内部 json 嵌套。 分区列 log_partition_time string __partition_time__ 系统保留字段 由日志的 time 字段对齐计算而得,分区粒度可配置,在配置项部分详述。 status string status 日志内容字段 解析自日志,该字段取值应该是可以枚举的,保证分区数目不会超出上限。 MaxCompute 表至少包含一个数据列、一个分区列。 系统保留字段中建议使用 __partition_time__,__source__,__topic__。 MaxCompute 单表有分区数目 6 万的限制,分区数超出后无法再写入数据,所以日志服务导入 MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。 系统保留字段 __extract_others__ 历史上曾用名 _extract_others_,填写后者也是兼容的。 MaxCompute 分区列的值不支持”/“等特殊字符,这些是 MaxCompute 的保留字段。 MaxCompute 分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。 步骤3 配置投递规则 开启投递。 初始化数加平台之后,根据页面提示进入LogHub —— 数据投递页面,选择需要投递的Logstore,并单击开启投递。 您也可以在MaxCompute(原ODPS)投递管理页面选择需要投递的Logstore,并单击开启投递以进入LogHub —— 数据投递页面。 图 1. 开启投递 配置投递规则。 在 LogHub —— 数据投递页面配置 字段关联等相关内容。 图 2. 配置投递规则 配置项含义: 参数 语义 投递名称 自定义一个投递的名称,方便后续管理。 MaxCompute Project MaxCompute项目名称,该项默认为新创建的Project,如果已经是MaxCompute老客户,可以下拉选择已创建其他Project。 MaxCompute Table MaxCompute表名称,请输入自定义的新建的MaxCompute表名称或者选择已有的MaxCompute表。 MaxCompute 普通列 按序,左边填写与MaxCompute表数据列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 MaxCompute 分区列 按序,左边填写与MaxCompute表分区列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 分区时间格式 __partition_time__输出的日期格式,参考 Java SimpleDateFormat。 导入MaxCompute间隔 MaxCompute数据投递间隔,默认1800,单位:秒。 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。 参考信息 __partition_time__ 格式 将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。 __partition_time__ 是根据日志time字段值计算得到(不是日志写入服务端时间,也不是日志投递时间),结合分区时间格式,向下取整(为避免触发MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐)计算出日期作为分区列。 举例来说,日志提取的time字段是“27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下: 导入MaxCompute间隔 分区时间格式 __partition_time__ 1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00 1800 yyyy-MM-dd HH:mm 2016-01-27 20:30 1800 yyyyMMdd 20160127 3600 yyyyMMddHHmm 201601272000 3600 yyyy_MM_dd_HH 2016_01_27_20 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。 以上分区时间格式是测试通过的样例,您也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。 __partition_time__ 使用方法 使用MaxCompute的字符串比较筛选数据,可以避免全表扫描。比如查询2016年1月26日一天内日志数据: select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27"; __extract_others__使用方法 log_extract_others为一个json字符串,如果想获取该字段的user-agent内容,可以进行如下查询: select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10; 说明 get_json_object是MaxCompute提供的标准UDF。请联系MaxCompute团队开通使用该标准UDF的权限。 示例供参考,请以MaxCompute产品建议为最终标准。 其他操作 编辑投递配置 在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。 投递任务管理 在启动投递功能后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考管理日志投递任务。 如果投递任务出现错误,控制台上会显示相应的错误信息: 错误信息 建议方案 MaxCompute项目空间不存在 在MaxCompute控制台中确认配置的MaxCompute项目是否存在,如果不存在则需要重新创建或配置。 MaxCompute表不存在 在MaxCompute控制台中确认配置的MaxCompute表是否存在,如果不存在则需要重新创建或配置。 MaxCompute项目空间或表没有向日志服务授权 在MaxCompute控制台中确认授权给日志服务账号的权限是否还存在,如果不存在则需要重新添加上相应权限。 MaxCompute错误 显示投递任务收到的MaxCompute错误,请参考MaxCompute相关文档或联系MaxCompute团队解决。日志服务会自动重试最近两天时间的失败任务。 日志服务导入字段配置无法匹配MaxCompute表的列 重新配置MaxCompute表格的列与日志服务数据字段的映射配置。 当投递任务发生错误时,请查看错误信息,问题解决后可以通过云控制台中“日志投递任务管理”或SDK来重试失败任务。 MaxCompute中消费日志 MaxCompute用户表中示例数据如下: | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ | 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ 同时,我们推荐您直接使用已经与MaxCompute绑定的大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。 授予MaxCompute数据投递权限 如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。 在MaxCompute项目空间下添加用户: ADD USER aliyun$shennong_open@aliyun.com; shennong_open@aliyun.com 是日志服务系统账号(请不要用自己的账号),授权目的是为了能将数据写入到MaxCompute MaxCompute项目空间Read/List权限授予: GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com; MaxCompute项目空间的表Describe/Alter/Update权限授予: GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com; 确认MaxCompute授权是否成功: SHOW GRANTS FOR aliyun$shennong_open@aliyun.com; A projects/{ODPS_PROJECT_NAME}: List | Read A projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

2019-12-01 23:11:16 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 投递日志到 MaxCompute 是日志服务的一个功能,能够帮助您最大化数据价值。您可以自己决定对某个日志库是否启用该功能。一旦启用该功能,日志服务后台会定时把写入到该日志库内的日志投递到 MaxCompute 对应的表格中。 使用限制 数加控制台创建、修改投递配置必须由主账号完成,不支持子账号操作。 投递MaxCompute是批量任务,请谨慎设置分区列:保证一个同步任务内处理的数据分区数小于512个;用作分区列的字段值不能包括/等MaxCompute保留字段 。配置细节请参考下文投递配置说明。 不支持海外Region的MaxCompute投递,海外Region的MaxCompute请使用dataworks进行数据同步。国内Region投递支持如下: 日志服务Region MaxCompute Region 华北1 华东2 华北2 华北2、华东2 华北3 华东2 华北5 华东2 华东1 华东2 华东2 华东2 华南1 华南1、华东2 香港 华东2 功能优势 日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势: 使用便捷 您只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。 避免重复收集工作 由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。 充分复用日志服务内的日志分类管理工作 用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。 说明 一般情况下日志数据在写入Logstore后的1个小时导入到MaxCompute,您可以在控制台投递任务管理查看导入状态。导入成功后即可在MaxCompute内查看到相关日志数据。判断数据是否已完全投递请参考文档。 结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。 配置流程 举例日志服务的一条日志如下: 16年01月27日20时50分13秒 10.10.*.* ip:10.10.*.* status:200 thread:414579208 time:27/Jan/2016:20:50:13 +0800 url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 user-agent:aliyun-sdk-java 日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。 步骤1 初始化数加平台 在日志服务的控制台Logstore列表单击日志投递列的MaxCompute。 自动跳转到初始化数加平台的页面。MaxCompute默认为按量付费模式,具体参见MaxCompute文档说明。 查看服务协议和条款后单击确定,初始化数加平台。 初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。 步骤2 数据模型映射在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。您可以参考日志服务日志数据结构了解数据结构。 将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系: MaxCompute 列类型 MaxCompute 列名(可自定义) MaxCompute 列类型(可自定义) 日志服务字段名(投递配置里填写) 日志服务字段类型 日志服务字段语义 数据列 log_source string __source__ 系统保留字段 日志来源的机器 IP。 log_time bigint __time__ 系统保留字段 日志的 Unix 时间戳(是从1970 年 1 月 1 日开始所经过的秒数),由用户日志的 time 字段计算得到。 log_topic string __topic__ 系统保留字段 日志主题。 time string time 日志内容字段 解析自日志。 ip string ip 日志内容字段 解析自日志。 thread string thread 日志内容字段 解析自日志。 log_extract_others string __extract_others__ 系统保留字段 未在配置中进行映射的其他日志内字段会通过 key-value 序列化到json,该 json 是一层结构,不支持字段内部 json 嵌套。 分区列 log_partition_time string __partition_time__ 系统保留字段 由日志的 time 字段对齐计算而得,分区粒度可配置,在配置项部分详述。 status string status 日志内容字段 解析自日志,该字段取值应该是可以枚举的,保证分区数目不会超出上限。 MaxCompute 表至少包含一个数据列、一个分区列。 系统保留字段中建议使用 __partition_time__,__source__,__topic__。 MaxCompute 单表有分区数目 6 万的限制,分区数超出后无法再写入数据,所以日志服务导入 MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。 系统保留字段 __extract_others__ 历史上曾用名 _extract_others_,填写后者也是兼容的。 MaxCompute 分区列的值不支持”/“等特殊字符,这些是 MaxCompute 的保留字段。 MaxCompute 分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。 步骤3 配置投递规则 开启投递。 初始化数加平台之后,根据页面提示进入LogHub —— 数据投递页面,选择需要投递的Logstore,并单击开启投递。 您也可以在MaxCompute(原ODPS)投递管理页面选择需要投递的Logstore,并单击开启投递以进入LogHub —— 数据投递页面。 图 1. 开启投递 配置投递规则。 在 LogHub —— 数据投递页面配置 字段关联等相关内容。 图 2. 配置投递规则 配置项含义: 参数 语义 投递名称 自定义一个投递的名称,方便后续管理。 MaxCompute Project MaxCompute项目名称,该项默认为新创建的Project,如果已经是MaxCompute老客户,可以下拉选择已创建其他Project。 MaxCompute Table MaxCompute表名称,请输入自定义的新建的MaxCompute表名称或者选择已有的MaxCompute表。 MaxCompute 普通列 按序,左边填写与MaxCompute表数据列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 MaxCompute 分区列 按序,左边填写与MaxCompute表分区列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 分区时间格式 __partition_time__输出的日期格式,参考 Java SimpleDateFormat。 导入MaxCompute间隔 MaxCompute数据投递间隔,默认1800,单位:秒。 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。 参考信息 __partition_time__ 格式 将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。 __partition_time__ 是根据日志time字段值计算得到(不是日志写入服务端时间,也不是日志投递时间),结合分区时间格式,向下取整(为避免触发MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐)计算出日期作为分区列。 举例来说,日志提取的time字段是“27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下: 导入MaxCompute间隔 分区时间格式 __partition_time__ 1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00 1800 yyyy-MM-dd HH:mm 2016-01-27 20:30 1800 yyyyMMdd 20160127 3600 yyyyMMddHHmm 201601272000 3600 yyyy_MM_dd_HH 2016_01_27_20 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。 以上分区时间格式是测试通过的样例,您也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。 __partition_time__ 使用方法 使用MaxCompute的字符串比较筛选数据,可以避免全表扫描。比如查询2016年1月26日一天内日志数据: select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27"; __extract_others__使用方法 log_extract_others为一个json字符串,如果想获取该字段的user-agent内容,可以进行如下查询: select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10; 说明 get_json_object是MaxCompute提供的标准UDF。请联系MaxCompute团队开通使用该标准UDF的权限。 示例供参考,请以MaxCompute产品建议为最终标准。 其他操作 编辑投递配置 在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。 投递任务管理 在启动投递功能后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考管理日志投递任务。 如果投递任务出现错误,控制台上会显示相应的错误信息: 错误信息 建议方案 MaxCompute项目空间不存在 在MaxCompute控制台中确认配置的MaxCompute项目是否存在,如果不存在则需要重新创建或配置。 MaxCompute表不存在 在MaxCompute控制台中确认配置的MaxCompute表是否存在,如果不存在则需要重新创建或配置。 MaxCompute项目空间或表没有向日志服务授权 在MaxCompute控制台中确认授权给日志服务账号的权限是否还存在,如果不存在则需要重新添加上相应权限。 MaxCompute错误 显示投递任务收到的MaxCompute错误,请参考MaxCompute相关文档或联系MaxCompute团队解决。日志服务会自动重试最近两天时间的失败任务。 日志服务导入字段配置无法匹配MaxCompute表的列 重新配置MaxCompute表格的列与日志服务数据字段的映射配置。 当投递任务发生错误时,请查看错误信息,问题解决后可以通过云控制台中“日志投递任务管理”或SDK来重试失败任务。 MaxCompute中消费日志 MaxCompute用户表中示例数据如下: | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ | 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ 同时,我们推荐您直接使用已经与MaxCompute绑定的大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。 授予MaxCompute数据投递权限 如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。 在MaxCompute项目空间下添加用户: ADD USER aliyun$shennong_open@aliyun.com; shennong_open@aliyun.com 是日志服务系统账号(请不要用自己的账号),授权目的是为了能将数据写入到MaxCompute MaxCompute项目空间Read/List权限授予: GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com; MaxCompute项目空间的表Describe/Alter/Update权限授予: GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com; 确认MaxCompute授权是否成功: SHOW GRANTS FOR aliyun$shennong_open@aliyun.com; A projects/{ODPS_PROJECT_NAME}: List | Read A projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

2019-12-01 23:11:15 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 投递日志到 MaxCompute 是日志服务的一个功能,能够帮助您最大化数据价值。您可以自己决定对某个日志库是否启用该功能。一旦启用该功能,日志服务后台会定时把写入到该日志库内的日志投递到 MaxCompute 对应的表格中。 使用限制 数加控制台创建、修改投递配置必须由主账号完成,不支持子账号操作。 投递MaxCompute是批量任务,请谨慎设置分区列:保证一个同步任务内处理的数据分区数小于512个;用作分区列的字段值不能包括/等MaxCompute保留字段 。配置细节请参考下文投递配置说明。 不支持海外Region的MaxCompute投递,海外Region的MaxCompute请使用dataworks进行数据同步。国内Region投递支持如下: 日志服务Region MaxCompute Region 华北1 华东2 华北2 华北2、华东2 华北3 华东2 华北5 华东2 华东1 华东2 华东2 华东2 华南1 华南1、华东2 香港 华东2 功能优势 日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势: 使用便捷 您只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。 避免重复收集工作 由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。 充分复用日志服务内的日志分类管理工作 用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。 说明 一般情况下日志数据在写入Logstore后的1个小时导入到MaxCompute,您可以在控制台投递任务管理查看导入状态。导入成功后即可在MaxCompute内查看到相关日志数据。判断数据是否已完全投递请参考文档。 结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。 配置流程 举例日志服务的一条日志如下: 16年01月27日20时50分13秒 10.10.*.* ip:10.10.*.* status:200 thread:414579208 time:27/Jan/2016:20:50:13 +0800 url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 user-agent:aliyun-sdk-java 日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。 步骤1 初始化数加平台 在日志服务的控制台Logstore列表单击日志投递列的MaxCompute。 自动跳转到初始化数加平台的页面。MaxCompute默认为按量付费模式,具体参见MaxCompute文档说明。 查看服务协议和条款后单击确定,初始化数加平台。 初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。 步骤2 数据模型映射在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。您可以参考日志服务日志数据结构了解数据结构。 将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系: MaxCompute 列类型 MaxCompute 列名(可自定义) MaxCompute 列类型(可自定义) 日志服务字段名(投递配置里填写) 日志服务字段类型 日志服务字段语义 数据列 log_source string __source__ 系统保留字段 日志来源的机器 IP。 log_time bigint __time__ 系统保留字段 日志的 Unix 时间戳(是从1970 年 1 月 1 日开始所经过的秒数),由用户日志的 time 字段计算得到。 log_topic string __topic__ 系统保留字段 日志主题。 time string time 日志内容字段 解析自日志。 ip string ip 日志内容字段 解析自日志。 thread string thread 日志内容字段 解析自日志。 log_extract_others string __extract_others__ 系统保留字段 未在配置中进行映射的其他日志内字段会通过 key-value 序列化到json,该 json 是一层结构,不支持字段内部 json 嵌套。 分区列 log_partition_time string __partition_time__ 系统保留字段 由日志的 time 字段对齐计算而得,分区粒度可配置,在配置项部分详述。 status string status 日志内容字段 解析自日志,该字段取值应该是可以枚举的,保证分区数目不会超出上限。 MaxCompute 表至少包含一个数据列、一个分区列。 系统保留字段中建议使用 __partition_time__,__source__,__topic__。 MaxCompute 单表有分区数目 6 万的限制,分区数超出后无法再写入数据,所以日志服务导入 MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。 系统保留字段 __extract_others__ 历史上曾用名 _extract_others_,填写后者也是兼容的。 MaxCompute 分区列的值不支持”/“等特殊字符,这些是 MaxCompute 的保留字段。 MaxCompute 分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。 步骤3 配置投递规则 开启投递。 初始化数加平台之后,根据页面提示进入LogHub —— 数据投递页面,选择需要投递的Logstore,并单击开启投递。 您也可以在MaxCompute(原ODPS)投递管理页面选择需要投递的Logstore,并单击开启投递以进入LogHub —— 数据投递页面。 图 1. 开启投递 配置投递规则。 在 LogHub —— 数据投递页面配置 字段关联等相关内容。 图 2. 配置投递规则 配置项含义: 参数 语义 投递名称 自定义一个投递的名称,方便后续管理。 MaxCompute Project MaxCompute项目名称,该项默认为新创建的Project,如果已经是MaxCompute老客户,可以下拉选择已创建其他Project。 MaxCompute Table MaxCompute表名称,请输入自定义的新建的MaxCompute表名称或者选择已有的MaxCompute表。 MaxCompute 普通列 按序,左边填写与MaxCompute表数据列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 MaxCompute 分区列 按序,左边填写与MaxCompute表分区列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 分区时间格式 __partition_time__输出的日期格式,参考 Java SimpleDateFormat。 导入MaxCompute间隔 MaxCompute数据投递间隔,默认1800,单位:秒。 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。 参考信息 __partition_time__ 格式 将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。 __partition_time__ 是根据日志time字段值计算得到(不是日志写入服务端时间,也不是日志投递时间),结合分区时间格式,向下取整(为避免触发MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐)计算出日期作为分区列。 举例来说,日志提取的time字段是“27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下: 导入MaxCompute间隔 分区时间格式 __partition_time__ 1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00 1800 yyyy-MM-dd HH:mm 2016-01-27 20:30 1800 yyyyMMdd 20160127 3600 yyyyMMddHHmm 201601272000 3600 yyyy_MM_dd_HH 2016_01_27_20 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。 以上分区时间格式是测试通过的样例,您也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。 __partition_time__ 使用方法 使用MaxCompute的字符串比较筛选数据,可以避免全表扫描。比如查询2016年1月26日一天内日志数据: select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27"; __extract_others__使用方法 log_extract_others为一个json字符串,如果想获取该字段的user-agent内容,可以进行如下查询: select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10; 说明 get_json_object是MaxCompute提供的标准UDF。请联系MaxCompute团队开通使用该标准UDF的权限。 示例供参考,请以MaxCompute产品建议为最终标准。 其他操作 编辑投递配置 在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。 投递任务管理 在启动投递功能后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考管理日志投递任务。 如果投递任务出现错误,控制台上会显示相应的错误信息: 错误信息 建议方案 MaxCompute项目空间不存在 在MaxCompute控制台中确认配置的MaxCompute项目是否存在,如果不存在则需要重新创建或配置。 MaxCompute表不存在 在MaxCompute控制台中确认配置的MaxCompute表是否存在,如果不存在则需要重新创建或配置。 MaxCompute项目空间或表没有向日志服务授权 在MaxCompute控制台中确认授权给日志服务账号的权限是否还存在,如果不存在则需要重新添加上相应权限。 MaxCompute错误 显示投递任务收到的MaxCompute错误,请参考MaxCompute相关文档或联系MaxCompute团队解决。日志服务会自动重试最近两天时间的失败任务。 日志服务导入字段配置无法匹配MaxCompute表的列 重新配置MaxCompute表格的列与日志服务数据字段的映射配置。 当投递任务发生错误时,请查看错误信息,问题解决后可以通过云控制台中“日志投递任务管理”或SDK来重试失败任务。 MaxCompute中消费日志 MaxCompute用户表中示例数据如下: | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ | 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ 同时,我们推荐您直接使用已经与MaxCompute绑定的大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。 授予MaxCompute数据投递权限 如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。 在MaxCompute项目空间下添加用户: ADD USER aliyun$shennong_open@aliyun.com; shennong_open@aliyun.com 是日志服务系统账号(请不要用自己的账号),授权目的是为了能将数据写入到MaxCompute MaxCompute项目空间Read/List权限授予: GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com; MaxCompute项目空间的表Describe/Alter/Update权限授予: GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com; 确认MaxCompute授权是否成功: SHOW GRANTS FOR aliyun$shennong_open@aliyun.com; A projects/{ODPS_PROJECT_NAME}: List | Read A projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

2019-12-01 23:11:17 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 投递日志到 MaxCompute 是日志服务的一个功能,能够帮助您最大化数据价值。您可以自己决定对某个日志库是否启用该功能。一旦启用该功能,日志服务后台会定时把写入到该日志库内的日志投递到 MaxCompute 对应的表格中。 使用限制 数加控制台创建、修改投递配置必须由主账号完成,不支持子账号操作。 投递MaxCompute是批量任务,请谨慎设置分区列:保证一个同步任务内处理的数据分区数小于512个;用作分区列的字段值不能包括/等MaxCompute保留字段 。配置细节请参考下文投递配置说明。 不支持海外Region的MaxCompute投递,海外Region的MaxCompute请使用dataworks进行数据同步。国内Region投递支持如下: 日志服务Region MaxCompute Region 华北1 华东2 华北2 华北2、华东2 华北3 华东2 华北5 华东2 华东1 华东2 华东2 华东2 华南1 华南1、华东2 香港 华东2 功能优势 日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势: 使用便捷 您只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。 避免重复收集工作 由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。 充分复用日志服务内的日志分类管理工作 用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。 说明 一般情况下日志数据在写入Logstore后的1个小时导入到MaxCompute,您可以在控制台投递任务管理查看导入状态。导入成功后即可在MaxCompute内查看到相关日志数据。判断数据是否已完全投递请参考文档。 结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。 配置流程 举例日志服务的一条日志如下: 16年01月27日20时50分13秒 10.10.*.* ip:10.10.*.* status:200 thread:414579208 time:27/Jan/2016:20:50:13 +0800 url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 user-agent:aliyun-sdk-java 日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。 步骤1 初始化数加平台 在日志服务的控制台Logstore列表单击日志投递列的MaxCompute。 自动跳转到初始化数加平台的页面。MaxCompute默认为按量付费模式,具体参见MaxCompute文档说明。 查看服务协议和条款后单击确定,初始化数加平台。 初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。 步骤2 数据模型映射在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。您可以参考日志服务日志数据结构了解数据结构。 将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系: MaxCompute 列类型 MaxCompute 列名(可自定义) MaxCompute 列类型(可自定义) 日志服务字段名(投递配置里填写) 日志服务字段类型 日志服务字段语义 数据列 log_source string __source__ 系统保留字段 日志来源的机器 IP。 log_time bigint __time__ 系统保留字段 日志的 Unix 时间戳(是从1970 年 1 月 1 日开始所经过的秒数),由用户日志的 time 字段计算得到。 log_topic string __topic__ 系统保留字段 日志主题。 time string time 日志内容字段 解析自日志。 ip string ip 日志内容字段 解析自日志。 thread string thread 日志内容字段 解析自日志。 log_extract_others string __extract_others__ 系统保留字段 未在配置中进行映射的其他日志内字段会通过 key-value 序列化到json,该 json 是一层结构,不支持字段内部 json 嵌套。 分区列 log_partition_time string __partition_time__ 系统保留字段 由日志的 time 字段对齐计算而得,分区粒度可配置,在配置项部分详述。 status string status 日志内容字段 解析自日志,该字段取值应该是可以枚举的,保证分区数目不会超出上限。 MaxCompute 表至少包含一个数据列、一个分区列。 系统保留字段中建议使用 __partition_time__,__source__,__topic__。 MaxCompute 单表有分区数目 6 万的限制,分区数超出后无法再写入数据,所以日志服务导入 MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。 系统保留字段 __extract_others__ 历史上曾用名 _extract_others_,填写后者也是兼容的。 MaxCompute 分区列的值不支持”/“等特殊字符,这些是 MaxCompute 的保留字段。 MaxCompute 分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。 步骤3 配置投递规则 开启投递。 初始化数加平台之后,根据页面提示进入LogHub —— 数据投递页面,选择需要投递的Logstore,并单击开启投递。 您也可以在MaxCompute(原ODPS)投递管理页面选择需要投递的Logstore,并单击开启投递以进入LogHub —— 数据投递页面。 图 1. 开启投递 配置投递规则。 在 LogHub —— 数据投递页面配置 字段关联等相关内容。 图 2. 配置投递规则 配置项含义: 参数 语义 投递名称 自定义一个投递的名称,方便后续管理。 MaxCompute Project MaxCompute项目名称,该项默认为新创建的Project,如果已经是MaxCompute老客户,可以下拉选择已创建其他Project。 MaxCompute Table MaxCompute表名称,请输入自定义的新建的MaxCompute表名称或者选择已有的MaxCompute表。 MaxCompute 普通列 按序,左边填写与MaxCompute表数据列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 MaxCompute 分区列 按序,左边填写与MaxCompute表分区列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 分区时间格式 __partition_time__输出的日期格式,参考 Java SimpleDateFormat。 导入MaxCompute间隔 MaxCompute数据投递间隔,默认1800,单位:秒。 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。 参考信息 __partition_time__ 格式 将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。 __partition_time__ 是根据日志time字段值计算得到(不是日志写入服务端时间,也不是日志投递时间),结合分区时间格式,向下取整(为避免触发MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐)计算出日期作为分区列。 举例来说,日志提取的time字段是“27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下: 导入MaxCompute间隔 分区时间格式 __partition_time__ 1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00 1800 yyyy-MM-dd HH:mm 2016-01-27 20:30 1800 yyyyMMdd 20160127 3600 yyyyMMddHHmm 201601272000 3600 yyyy_MM_dd_HH 2016_01_27_20 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。 以上分区时间格式是测试通过的样例,您也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。 __partition_time__ 使用方法 使用MaxCompute的字符串比较筛选数据,可以避免全表扫描。比如查询2016年1月26日一天内日志数据: select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27"; __extract_others__使用方法 log_extract_others为一个json字符串,如果想获取该字段的user-agent内容,可以进行如下查询: select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10; 说明 get_json_object是MaxCompute提供的标准UDF。请联系MaxCompute团队开通使用该标准UDF的权限。 示例供参考,请以MaxCompute产品建议为最终标准。 其他操作 编辑投递配置 在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。 投递任务管理 在启动投递功能后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考管理日志投递任务。 如果投递任务出现错误,控制台上会显示相应的错误信息: 错误信息 建议方案 MaxCompute项目空间不存在 在MaxCompute控制台中确认配置的MaxCompute项目是否存在,如果不存在则需要重新创建或配置。 MaxCompute表不存在 在MaxCompute控制台中确认配置的MaxCompute表是否存在,如果不存在则需要重新创建或配置。 MaxCompute项目空间或表没有向日志服务授权 在MaxCompute控制台中确认授权给日志服务账号的权限是否还存在,如果不存在则需要重新添加上相应权限。 MaxCompute错误 显示投递任务收到的MaxCompute错误,请参考MaxCompute相关文档或联系MaxCompute团队解决。日志服务会自动重试最近两天时间的失败任务。 日志服务导入字段配置无法匹配MaxCompute表的列 重新配置MaxCompute表格的列与日志服务数据字段的映射配置。 当投递任务发生错误时,请查看错误信息,问题解决后可以通过云控制台中“日志投递任务管理”或SDK来重试失败任务。 MaxCompute中消费日志 MaxCompute用户表中示例数据如下: | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ | 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ 同时,我们推荐您直接使用已经与MaxCompute绑定的大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。 授予MaxCompute数据投递权限 如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。 在MaxCompute项目空间下添加用户: ADD USER aliyun$shennong_open@aliyun.com; shennong_open@aliyun.com 是日志服务系统账号(请不要用自己的账号),授权目的是为了能将数据写入到MaxCompute MaxCompute项目空间Read/List权限授予: GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com; MaxCompute项目空间的表Describe/Alter/Update权限授予: GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com; 确认MaxCompute授权是否成功: SHOW GRANTS FOR aliyun$shennong_open@aliyun.com; A projects/{ODPS_PROJECT_NAME}: List | Read A projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

2019-12-01 23:11:16 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 投递日志到 MaxCompute 是日志服务的一个功能,能够帮助您最大化数据价值。您可以自己决定对某个日志库是否启用该功能。一旦启用该功能,日志服务后台会定时把写入到该日志库内的日志投递到 MaxCompute 对应的表格中。 使用限制 数加控制台创建、修改投递配置必须由主账号完成,不支持子账号操作。 投递MaxCompute是批量任务,请谨慎设置分区列:保证一个同步任务内处理的数据分区数小于512个;用作分区列的字段值不能包括/等MaxCompute保留字段 。配置细节请参考下文投递配置说明。 不支持海外Region的MaxCompute投递,海外Region的MaxCompute请使用dataworks进行数据同步。国内Region投递支持如下: 日志服务Region MaxCompute Region 华北1 华东2 华北2 华北2、华东2 华北3 华东2 华北5 华东2 华东1 华东2 华东2 华东2 华南1 华南1、华东2 香港 华东2 功能优势 日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势: 使用便捷 您只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。 避免重复收集工作 由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。 充分复用日志服务内的日志分类管理工作 用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。 说明 一般情况下日志数据在写入Logstore后的1个小时导入到MaxCompute,您可以在控制台投递任务管理查看导入状态。导入成功后即可在MaxCompute内查看到相关日志数据。判断数据是否已完全投递请参考文档。 结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。 配置流程 举例日志服务的一条日志如下: 16年01月27日20时50分13秒 10.10.*.* ip:10.10.*.* status:200 thread:414579208 time:27/Jan/2016:20:50:13 +0800 url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 user-agent:aliyun-sdk-java 日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。 步骤1 初始化数加平台 在日志服务的控制台Logstore列表单击日志投递列的MaxCompute。 自动跳转到初始化数加平台的页面。MaxCompute默认为按量付费模式,具体参见MaxCompute文档说明。 查看服务协议和条款后单击确定,初始化数加平台。 初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。 步骤2 数据模型映射在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。您可以参考日志服务日志数据结构了解数据结构。 将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系: MaxCompute 列类型 MaxCompute 列名(可自定义) MaxCompute 列类型(可自定义) 日志服务字段名(投递配置里填写) 日志服务字段类型 日志服务字段语义 数据列 log_source string __source__ 系统保留字段 日志来源的机器 IP。 log_time bigint __time__ 系统保留字段 日志的 Unix 时间戳(是从1970 年 1 月 1 日开始所经过的秒数),由用户日志的 time 字段计算得到。 log_topic string __topic__ 系统保留字段 日志主题。 time string time 日志内容字段 解析自日志。 ip string ip 日志内容字段 解析自日志。 thread string thread 日志内容字段 解析自日志。 log_extract_others string __extract_others__ 系统保留字段 未在配置中进行映射的其他日志内字段会通过 key-value 序列化到json,该 json 是一层结构,不支持字段内部 json 嵌套。 分区列 log_partition_time string __partition_time__ 系统保留字段 由日志的 time 字段对齐计算而得,分区粒度可配置,在配置项部分详述。 status string status 日志内容字段 解析自日志,该字段取值应该是可以枚举的,保证分区数目不会超出上限。 MaxCompute 表至少包含一个数据列、一个分区列。 系统保留字段中建议使用 __partition_time__,__source__,__topic__。 MaxCompute 单表有分区数目 6 万的限制,分区数超出后无法再写入数据,所以日志服务导入 MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。 系统保留字段 __extract_others__ 历史上曾用名 _extract_others_,填写后者也是兼容的。 MaxCompute 分区列的值不支持”/“等特殊字符,这些是 MaxCompute 的保留字段。 MaxCompute 分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。 步骤3 配置投递规则 开启投递。 初始化数加平台之后,根据页面提示进入LogHub —— 数据投递页面,选择需要投递的Logstore,并单击开启投递。 您也可以在MaxCompute(原ODPS)投递管理页面选择需要投递的Logstore,并单击开启投递以进入LogHub —— 数据投递页面。 图 1. 开启投递 配置投递规则。 在 LogHub —— 数据投递页面配置 字段关联等相关内容。 图 2. 配置投递规则 配置项含义: 参数 语义 投递名称 自定义一个投递的名称,方便后续管理。 MaxCompute Project MaxCompute项目名称,该项默认为新创建的Project,如果已经是MaxCompute老客户,可以下拉选择已创建其他Project。 MaxCompute Table MaxCompute表名称,请输入自定义的新建的MaxCompute表名称或者选择已有的MaxCompute表。 MaxCompute 普通列 按序,左边填写与MaxCompute表数据列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 MaxCompute 分区列 按序,左边填写与MaxCompute表分区列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 分区时间格式 __partition_time__输出的日期格式,参考 Java SimpleDateFormat。 导入MaxCompute间隔 MaxCompute数据投递间隔,默认1800,单位:秒。 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。 参考信息 __partition_time__ 格式 将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。 __partition_time__ 是根据日志time字段值计算得到(不是日志写入服务端时间,也不是日志投递时间),结合分区时间格式,向下取整(为避免触发MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐)计算出日期作为分区列。 举例来说,日志提取的time字段是“27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下: 导入MaxCompute间隔 分区时间格式 __partition_time__ 1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00 1800 yyyy-MM-dd HH:mm 2016-01-27 20:30 1800 yyyyMMdd 20160127 3600 yyyyMMddHHmm 201601272000 3600 yyyy_MM_dd_HH 2016_01_27_20 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。 以上分区时间格式是测试通过的样例,您也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。 __partition_time__ 使用方法 使用MaxCompute的字符串比较筛选数据,可以避免全表扫描。比如查询2016年1月26日一天内日志数据: select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27"; __extract_others__使用方法 log_extract_others为一个json字符串,如果想获取该字段的user-agent内容,可以进行如下查询: select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10; 说明 get_json_object是MaxCompute提供的标准UDF。请联系MaxCompute团队开通使用该标准UDF的权限。 示例供参考,请以MaxCompute产品建议为最终标准。 其他操作 编辑投递配置 在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。 投递任务管理 在启动投递功能后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考管理日志投递任务。 如果投递任务出现错误,控制台上会显示相应的错误信息: 错误信息 建议方案 MaxCompute项目空间不存在 在MaxCompute控制台中确认配置的MaxCompute项目是否存在,如果不存在则需要重新创建或配置。 MaxCompute表不存在 在MaxCompute控制台中确认配置的MaxCompute表是否存在,如果不存在则需要重新创建或配置。 MaxCompute项目空间或表没有向日志服务授权 在MaxCompute控制台中确认授权给日志服务账号的权限是否还存在,如果不存在则需要重新添加上相应权限。 MaxCompute错误 显示投递任务收到的MaxCompute错误,请参考MaxCompute相关文档或联系MaxCompute团队解决。日志服务会自动重试最近两天时间的失败任务。 日志服务导入字段配置无法匹配MaxCompute表的列 重新配置MaxCompute表格的列与日志服务数据字段的映射配置。 当投递任务发生错误时,请查看错误信息,问题解决后可以通过云控制台中“日志投递任务管理”或SDK来重试失败任务。 MaxCompute中消费日志 MaxCompute用户表中示例数据如下: | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ | 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ 同时,我们推荐您直接使用已经与MaxCompute绑定的大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。 授予MaxCompute数据投递权限 如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。 在MaxCompute项目空间下添加用户: ADD USER aliyun$shennong_open@aliyun.com; shennong_open@aliyun.com 是日志服务系统账号(请不要用自己的账号),授权目的是为了能将数据写入到MaxCompute MaxCompute项目空间Read/List权限授予: GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com; MaxCompute项目空间的表Describe/Alter/Update权限授予: GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com; 确认MaxCompute授权是否成功: SHOW GRANTS FOR aliyun$shennong_open@aliyun.com; A projects/{ODPS_PROJECT_NAME}: List | Read A projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

2019-12-01 23:11:18 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 投递日志到 MaxCompute 是日志服务的一个功能,能够帮助您最大化数据价值。您可以自己决定对某个日志库是否启用该功能。一旦启用该功能,日志服务后台会定时把写入到该日志库内的日志投递到 MaxCompute 对应的表格中。 使用限制 数加控制台创建、修改投递配置必须由主账号完成,不支持子账号操作。 投递MaxCompute是批量任务,请谨慎设置分区列:保证一个同步任务内处理的数据分区数小于512个;用作分区列的字段值不能包括/等MaxCompute保留字段 。配置细节请参考下文投递配置说明。 不支持海外Region的MaxCompute投递,海外Region的MaxCompute请使用dataworks进行数据同步。国内Region投递支持如下: 日志服务Region MaxCompute Region 华北1 华东2 华北2 华北2、华东2 华北3 华东2 华北5 华东2 华东1 华东2 华东2 华东2 华南1 华南1、华东2 香港 华东2 功能优势 日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势: 使用便捷 您只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。 避免重复收集工作 由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。 充分复用日志服务内的日志分类管理工作 用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。 说明 一般情况下日志数据在写入Logstore后的1个小时导入到MaxCompute,您可以在控制台投递任务管理查看导入状态。导入成功后即可在MaxCompute内查看到相关日志数据。判断数据是否已完全投递请参考文档。 结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。 配置流程 举例日志服务的一条日志如下: 16年01月27日20时50分13秒 10.10.*.* ip:10.10.*.* status:200 thread:414579208 time:27/Jan/2016:20:50:13 +0800 url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 user-agent:aliyun-sdk-java 日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。 步骤1 初始化数加平台 在日志服务的控制台Logstore列表单击日志投递列的MaxCompute。 自动跳转到初始化数加平台的页面。MaxCompute默认为按量付费模式,具体参见MaxCompute文档说明。 查看服务协议和条款后单击确定,初始化数加平台。 初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。 步骤2 数据模型映射在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。您可以参考日志服务日志数据结构了解数据结构。 将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系: MaxCompute 列类型 MaxCompute 列名(可自定义) MaxCompute 列类型(可自定义) 日志服务字段名(投递配置里填写) 日志服务字段类型 日志服务字段语义 数据列 log_source string __source__ 系统保留字段 日志来源的机器 IP。 log_time bigint __time__ 系统保留字段 日志的 Unix 时间戳(是从1970 年 1 月 1 日开始所经过的秒数),由用户日志的 time 字段计算得到。 log_topic string __topic__ 系统保留字段 日志主题。 time string time 日志内容字段 解析自日志。 ip string ip 日志内容字段 解析自日志。 thread string thread 日志内容字段 解析自日志。 log_extract_others string __extract_others__ 系统保留字段 未在配置中进行映射的其他日志内字段会通过 key-value 序列化到json,该 json 是一层结构,不支持字段内部 json 嵌套。 分区列 log_partition_time string __partition_time__ 系统保留字段 由日志的 time 字段对齐计算而得,分区粒度可配置,在配置项部分详述。 status string status 日志内容字段 解析自日志,该字段取值应该是可以枚举的,保证分区数目不会超出上限。 MaxCompute 表至少包含一个数据列、一个分区列。 系统保留字段中建议使用 __partition_time__,__source__,__topic__。 MaxCompute 单表有分区数目 6 万的限制,分区数超出后无法再写入数据,所以日志服务导入 MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。 系统保留字段 __extract_others__ 历史上曾用名 _extract_others_,填写后者也是兼容的。 MaxCompute 分区列的值不支持”/“等特殊字符,这些是 MaxCompute 的保留字段。 MaxCompute 分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。 步骤3 配置投递规则 开启投递。 初始化数加平台之后,根据页面提示进入LogHub —— 数据投递页面,选择需要投递的Logstore,并单击开启投递。 您也可以在MaxCompute(原ODPS)投递管理页面选择需要投递的Logstore,并单击开启投递以进入LogHub —— 数据投递页面。 图 1. 开启投递 配置投递规则。 在 LogHub —— 数据投递页面配置 字段关联等相关内容。 图 2. 配置投递规则 配置项含义: 参数 语义 投递名称 自定义一个投递的名称,方便后续管理。 MaxCompute Project MaxCompute项目名称,该项默认为新创建的Project,如果已经是MaxCompute老客户,可以下拉选择已创建其他Project。 MaxCompute Table MaxCompute表名称,请输入自定义的新建的MaxCompute表名称或者选择已有的MaxCompute表。 MaxCompute 普通列 按序,左边填写与MaxCompute表数据列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 MaxCompute 分区列 按序,左边填写与MaxCompute表分区列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 分区时间格式 __partition_time__输出的日期格式,参考 Java SimpleDateFormat。 导入MaxCompute间隔 MaxCompute数据投递间隔,默认1800,单位:秒。 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。 参考信息 __partition_time__ 格式 将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。 __partition_time__ 是根据日志time字段值计算得到(不是日志写入服务端时间,也不是日志投递时间),结合分区时间格式,向下取整(为避免触发MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐)计算出日期作为分区列。 举例来说,日志提取的time字段是“27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下: 导入MaxCompute间隔 分区时间格式 __partition_time__ 1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00 1800 yyyy-MM-dd HH:mm 2016-01-27 20:30 1800 yyyyMMdd 20160127 3600 yyyyMMddHHmm 201601272000 3600 yyyy_MM_dd_HH 2016_01_27_20 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。 以上分区时间格式是测试通过的样例,您也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。 __partition_time__ 使用方法 使用MaxCompute的字符串比较筛选数据,可以避免全表扫描。比如查询2016年1月26日一天内日志数据: select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27"; __extract_others__使用方法 log_extract_others为一个json字符串,如果想获取该字段的user-agent内容,可以进行如下查询: select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10; 说明 get_json_object是MaxCompute提供的标准UDF。请联系MaxCompute团队开通使用该标准UDF的权限。 示例供参考,请以MaxCompute产品建议为最终标准。 其他操作 编辑投递配置 在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。 投递任务管理 在启动投递功能后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考管理日志投递任务。 如果投递任务出现错误,控制台上会显示相应的错误信息: 错误信息 建议方案 MaxCompute项目空间不存在 在MaxCompute控制台中确认配置的MaxCompute项目是否存在,如果不存在则需要重新创建或配置。 MaxCompute表不存在 在MaxCompute控制台中确认配置的MaxCompute表是否存在,如果不存在则需要重新创建或配置。 MaxCompute项目空间或表没有向日志服务授权 在MaxCompute控制台中确认授权给日志服务账号的权限是否还存在,如果不存在则需要重新添加上相应权限。 MaxCompute错误 显示投递任务收到的MaxCompute错误,请参考MaxCompute相关文档或联系MaxCompute团队解决。日志服务会自动重试最近两天时间的失败任务。 日志服务导入字段配置无法匹配MaxCompute表的列 重新配置MaxCompute表格的列与日志服务数据字段的映射配置。 当投递任务发生错误时,请查看错误信息,问题解决后可以通过云控制台中“日志投递任务管理”或SDK来重试失败任务。 MaxCompute中消费日志 MaxCompute用户表中示例数据如下: | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ | 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ 同时,我们推荐您直接使用已经与MaxCompute绑定的大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。 授予MaxCompute数据投递权限 如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。 在MaxCompute项目空间下添加用户: ADD USER aliyun$shennong_open@aliyun.com; shennong_open@aliyun.com 是日志服务系统账号(请不要用自己的账号),授权目的是为了能将数据写入到MaxCompute MaxCompute项目空间Read/List权限授予: GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com; MaxCompute项目空间的表Describe/Alter/Update权限授予: GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com; 确认MaxCompute授权是否成功: SHOW GRANTS FOR aliyun$shennong_open@aliyun.com; A projects/{ODPS_PROJECT_NAME}: List | Read A projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

2019-12-01 23:11:16 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 投递日志到 MaxCompute 是日志服务的一个功能,能够帮助您最大化数据价值。您可以自己决定对某个日志库是否启用该功能。一旦启用该功能,日志服务后台会定时把写入到该日志库内的日志投递到 MaxCompute 对应的表格中。 使用限制 数加控制台创建、修改投递配置必须由主账号完成,不支持子账号操作。 投递MaxCompute是批量任务,请谨慎设置分区列:保证一个同步任务内处理的数据分区数小于512个;用作分区列的字段值不能包括/等MaxCompute保留字段 。配置细节请参考下文投递配置说明。 不支持海外Region的MaxCompute投递,海外Region的MaxCompute请使用dataworks进行数据同步。国内Region投递支持如下: 日志服务Region MaxCompute Region 华北1 华东2 华北2 华北2、华东2 华北3 华东2 华北5 华东2 华东1 华东2 华东2 华东2 华南1 华南1、华东2 香港 华东2 功能优势 日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势: 使用便捷 您只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。 避免重复收集工作 由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。 充分复用日志服务内的日志分类管理工作 用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。 说明 一般情况下日志数据在写入Logstore后的1个小时导入到MaxCompute,您可以在控制台投递任务管理查看导入状态。导入成功后即可在MaxCompute内查看到相关日志数据。判断数据是否已完全投递请参考文档。 结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。 配置流程 举例日志服务的一条日志如下: 16年01月27日20时50分13秒 10.10.*.* ip:10.10.*.* status:200 thread:414579208 time:27/Jan/2016:20:50:13 +0800 url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 user-agent:aliyun-sdk-java 日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。 步骤1 初始化数加平台 在日志服务的控制台Logstore列表单击日志投递列的MaxCompute。 自动跳转到初始化数加平台的页面。MaxCompute默认为按量付费模式,具体参见MaxCompute文档说明。 查看服务协议和条款后单击确定,初始化数加平台。 初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。 步骤2 数据模型映射在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。您可以参考日志服务日志数据结构了解数据结构。 将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系: MaxCompute 列类型 MaxCompute 列名(可自定义) MaxCompute 列类型(可自定义) 日志服务字段名(投递配置里填写) 日志服务字段类型 日志服务字段语义 数据列 log_source string __source__ 系统保留字段 日志来源的机器 IP。 log_time bigint __time__ 系统保留字段 日志的 Unix 时间戳(是从1970 年 1 月 1 日开始所经过的秒数),由用户日志的 time 字段计算得到。 log_topic string __topic__ 系统保留字段 日志主题。 time string time 日志内容字段 解析自日志。 ip string ip 日志内容字段 解析自日志。 thread string thread 日志内容字段 解析自日志。 log_extract_others string __extract_others__ 系统保留字段 未在配置中进行映射的其他日志内字段会通过 key-value 序列化到json,该 json 是一层结构,不支持字段内部 json 嵌套。 分区列 log_partition_time string __partition_time__ 系统保留字段 由日志的 time 字段对齐计算而得,分区粒度可配置,在配置项部分详述。 status string status 日志内容字段 解析自日志,该字段取值应该是可以枚举的,保证分区数目不会超出上限。 MaxCompute 表至少包含一个数据列、一个分区列。 系统保留字段中建议使用 __partition_time__,__source__,__topic__。 MaxCompute 单表有分区数目 6 万的限制,分区数超出后无法再写入数据,所以日志服务导入 MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。 系统保留字段 __extract_others__ 历史上曾用名 _extract_others_,填写后者也是兼容的。 MaxCompute 分区列的值不支持”/“等特殊字符,这些是 MaxCompute 的保留字段。 MaxCompute 分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。 步骤3 配置投递规则 开启投递。 初始化数加平台之后,根据页面提示进入LogHub —— 数据投递页面,选择需要投递的Logstore,并单击开启投递。 您也可以在MaxCompute(原ODPS)投递管理页面选择需要投递的Logstore,并单击开启投递以进入LogHub —— 数据投递页面。 图 1. 开启投递 配置投递规则。 在 LogHub —— 数据投递页面配置 字段关联等相关内容。 图 2. 配置投递规则 配置项含义: 参数 语义 投递名称 自定义一个投递的名称,方便后续管理。 MaxCompute Project MaxCompute项目名称,该项默认为新创建的Project,如果已经是MaxCompute老客户,可以下拉选择已创建其他Project。 MaxCompute Table MaxCompute表名称,请输入自定义的新建的MaxCompute表名称或者选择已有的MaxCompute表。 MaxCompute 普通列 按序,左边填写与MaxCompute表数据列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 MaxCompute 分区列 按序,左边填写与MaxCompute表分区列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 分区时间格式 __partition_time__输出的日期格式,参考 Java SimpleDateFormat。 导入MaxCompute间隔 MaxCompute数据投递间隔,默认1800,单位:秒。 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。 参考信息 __partition_time__ 格式 将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。 __partition_time__ 是根据日志time字段值计算得到(不是日志写入服务端时间,也不是日志投递时间),结合分区时间格式,向下取整(为避免触发MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐)计算出日期作为分区列。 举例来说,日志提取的time字段是“27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下: 导入MaxCompute间隔 分区时间格式 __partition_time__ 1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00 1800 yyyy-MM-dd HH:mm 2016-01-27 20:30 1800 yyyyMMdd 20160127 3600 yyyyMMddHHmm 201601272000 3600 yyyy_MM_dd_HH 2016_01_27_20 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。 以上分区时间格式是测试通过的样例,您也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。 __partition_time__ 使用方法 使用MaxCompute的字符串比较筛选数据,可以避免全表扫描。比如查询2016年1月26日一天内日志数据: select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27"; __extract_others__使用方法 log_extract_others为一个json字符串,如果想获取该字段的user-agent内容,可以进行如下查询: select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10; 说明 get_json_object是MaxCompute提供的标准UDF。请联系MaxCompute团队开通使用该标准UDF的权限。 示例供参考,请以MaxCompute产品建议为最终标准。 其他操作 编辑投递配置 在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。 投递任务管理 在启动投递功能后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考管理日志投递任务。 如果投递任务出现错误,控制台上会显示相应的错误信息: 错误信息 建议方案 MaxCompute项目空间不存在 在MaxCompute控制台中确认配置的MaxCompute项目是否存在,如果不存在则需要重新创建或配置。 MaxCompute表不存在 在MaxCompute控制台中确认配置的MaxCompute表是否存在,如果不存在则需要重新创建或配置。 MaxCompute项目空间或表没有向日志服务授权 在MaxCompute控制台中确认授权给日志服务账号的权限是否还存在,如果不存在则需要重新添加上相应权限。 MaxCompute错误 显示投递任务收到的MaxCompute错误,请参考MaxCompute相关文档或联系MaxCompute团队解决。日志服务会自动重试最近两天时间的失败任务。 日志服务导入字段配置无法匹配MaxCompute表的列 重新配置MaxCompute表格的列与日志服务数据字段的映射配置。 当投递任务发生错误时,请查看错误信息,问题解决后可以通过云控制台中“日志投递任务管理”或SDK来重试失败任务。 MaxCompute中消费日志 MaxCompute用户表中示例数据如下: | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ | 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ 同时,我们推荐您直接使用已经与MaxCompute绑定的大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。 授予MaxCompute数据投递权限 如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。 在MaxCompute项目空间下添加用户: ADD USER aliyun$shennong_open@aliyun.com; shennong_open@aliyun.com 是日志服务系统账号(请不要用自己的账号),授权目的是为了能将数据写入到MaxCompute MaxCompute项目空间Read/List权限授予: GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com; MaxCompute项目空间的表Describe/Alter/Update权限授予: GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com; 确认MaxCompute授权是否成功: SHOW GRANTS FOR aliyun$shennong_open@aliyun.com; A projects/{ODPS_PROJECT_NAME}: List | Read A projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

2019-12-01 23:11:17 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 投递日志到 MaxCompute 是日志服务的一个功能,能够帮助您最大化数据价值。您可以自己决定对某个日志库是否启用该功能。一旦启用该功能,日志服务后台会定时把写入到该日志库内的日志投递到 MaxCompute 对应的表格中。 使用限制 数加控制台创建、修改投递配置必须由主账号完成,不支持子账号操作。 投递MaxCompute是批量任务,请谨慎设置分区列:保证一个同步任务内处理的数据分区数小于512个;用作分区列的字段值不能包括/等MaxCompute保留字段 。配置细节请参考下文投递配置说明。 不支持海外Region的MaxCompute投递,海外Region的MaxCompute请使用dataworks进行数据同步。国内Region投递支持如下: 日志服务Region MaxCompute Region 华北1 华东2 华北2 华北2、华东2 华北3 华东2 华北5 华东2 华东1 华东2 华东2 华东2 华南1 华南1、华东2 香港 华东2 功能优势 日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势: 使用便捷 您只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。 避免重复收集工作 由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。 充分复用日志服务内的日志分类管理工作 用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。 说明 一般情况下日志数据在写入Logstore后的1个小时导入到MaxCompute,您可以在控制台投递任务管理查看导入状态。导入成功后即可在MaxCompute内查看到相关日志数据。判断数据是否已完全投递请参考文档。 结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。 配置流程 举例日志服务的一条日志如下: 16年01月27日20时50分13秒 10.10.*.* ip:10.10.*.* status:200 thread:414579208 time:27/Jan/2016:20:50:13 +0800 url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 user-agent:aliyun-sdk-java 日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。 步骤1 初始化数加平台 在日志服务的控制台Logstore列表单击日志投递列的MaxCompute。 自动跳转到初始化数加平台的页面。MaxCompute默认为按量付费模式,具体参见MaxCompute文档说明。 查看服务协议和条款后单击确定,初始化数加平台。 初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。 步骤2 数据模型映射在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。您可以参考日志服务日志数据结构了解数据结构。 将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系: MaxCompute 列类型 MaxCompute 列名(可自定义) MaxCompute 列类型(可自定义) 日志服务字段名(投递配置里填写) 日志服务字段类型 日志服务字段语义 数据列 log_source string __source__ 系统保留字段 日志来源的机器 IP。 log_time bigint __time__ 系统保留字段 日志的 Unix 时间戳(是从1970 年 1 月 1 日开始所经过的秒数),由用户日志的 time 字段计算得到。 log_topic string __topic__ 系统保留字段 日志主题。 time string time 日志内容字段 解析自日志。 ip string ip 日志内容字段 解析自日志。 thread string thread 日志内容字段 解析自日志。 log_extract_others string __extract_others__ 系统保留字段 未在配置中进行映射的其他日志内字段会通过 key-value 序列化到json,该 json 是一层结构,不支持字段内部 json 嵌套。 分区列 log_partition_time string __partition_time__ 系统保留字段 由日志的 time 字段对齐计算而得,分区粒度可配置,在配置项部分详述。 status string status 日志内容字段 解析自日志,该字段取值应该是可以枚举的,保证分区数目不会超出上限。 MaxCompute 表至少包含一个数据列、一个分区列。 系统保留字段中建议使用 __partition_time__,__source__,__topic__。 MaxCompute 单表有分区数目 6 万的限制,分区数超出后无法再写入数据,所以日志服务导入 MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。 系统保留字段 __extract_others__ 历史上曾用名 _extract_others_,填写后者也是兼容的。 MaxCompute 分区列的值不支持”/“等特殊字符,这些是 MaxCompute 的保留字段。 MaxCompute 分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。 步骤3 配置投递规则 开启投递。 初始化数加平台之后,根据页面提示进入LogHub —— 数据投递页面,选择需要投递的Logstore,并单击开启投递。 您也可以在MaxCompute(原ODPS)投递管理页面选择需要投递的Logstore,并单击开启投递以进入LogHub —— 数据投递页面。 图 1. 开启投递 配置投递规则。 在 LogHub —— 数据投递页面配置 字段关联等相关内容。 图 2. 配置投递规则 配置项含义: 参数 语义 投递名称 自定义一个投递的名称,方便后续管理。 MaxCompute Project MaxCompute项目名称,该项默认为新创建的Project,如果已经是MaxCompute老客户,可以下拉选择已创建其他Project。 MaxCompute Table MaxCompute表名称,请输入自定义的新建的MaxCompute表名称或者选择已有的MaxCompute表。 MaxCompute 普通列 按序,左边填写与MaxCompute表数据列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 MaxCompute 分区列 按序,左边填写与MaxCompute表分区列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 分区时间格式 __partition_time__输出的日期格式,参考 Java SimpleDateFormat。 导入MaxCompute间隔 MaxCompute数据投递间隔,默认1800,单位:秒。 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。 参考信息 __partition_time__ 格式 将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。 __partition_time__ 是根据日志time字段值计算得到(不是日志写入服务端时间,也不是日志投递时间),结合分区时间格式,向下取整(为避免触发MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐)计算出日期作为分区列。 举例来说,日志提取的time字段是“27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下: 导入MaxCompute间隔 分区时间格式 __partition_time__ 1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00 1800 yyyy-MM-dd HH:mm 2016-01-27 20:30 1800 yyyyMMdd 20160127 3600 yyyyMMddHHmm 201601272000 3600 yyyy_MM_dd_HH 2016_01_27_20 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。 以上分区时间格式是测试通过的样例,您也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。 __partition_time__ 使用方法 使用MaxCompute的字符串比较筛选数据,可以避免全表扫描。比如查询2016年1月26日一天内日志数据: select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27"; __extract_others__使用方法 log_extract_others为一个json字符串,如果想获取该字段的user-agent内容,可以进行如下查询: select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10; 说明 get_json_object是MaxCompute提供的标准UDF。请联系MaxCompute团队开通使用该标准UDF的权限。 示例供参考,请以MaxCompute产品建议为最终标准。 其他操作 编辑投递配置 在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。 投递任务管理 在启动投递功能后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考管理日志投递任务。 如果投递任务出现错误,控制台上会显示相应的错误信息: 错误信息 建议方案 MaxCompute项目空间不存在 在MaxCompute控制台中确认配置的MaxCompute项目是否存在,如果不存在则需要重新创建或配置。 MaxCompute表不存在 在MaxCompute控制台中确认配置的MaxCompute表是否存在,如果不存在则需要重新创建或配置。 MaxCompute项目空间或表没有向日志服务授权 在MaxCompute控制台中确认授权给日志服务账号的权限是否还存在,如果不存在则需要重新添加上相应权限。 MaxCompute错误 显示投递任务收到的MaxCompute错误,请参考MaxCompute相关文档或联系MaxCompute团队解决。日志服务会自动重试最近两天时间的失败任务。 日志服务导入字段配置无法匹配MaxCompute表的列 重新配置MaxCompute表格的列与日志服务数据字段的映射配置。 当投递任务发生错误时,请查看错误信息,问题解决后可以通过云控制台中“日志投递任务管理”或SDK来重试失败任务。 MaxCompute中消费日志 MaxCompute用户表中示例数据如下: | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ | 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ 同时,我们推荐您直接使用已经与MaxCompute绑定的大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。 授予MaxCompute数据投递权限 如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。 在MaxCompute项目空间下添加用户: ADD USER aliyun$shennong_open@aliyun.com; shennong_open@aliyun.com 是日志服务系统账号(请不要用自己的账号),授权目的是为了能将数据写入到MaxCompute MaxCompute项目空间Read/List权限授予: GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com; MaxCompute项目空间的表Describe/Alter/Update权限授予: GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com; 确认MaxCompute授权是否成功: SHOW GRANTS FOR aliyun$shennong_open@aliyun.com; A projects/{ODPS_PROJECT_NAME}: List | Read A projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

2019-12-01 23:11:15 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 投递日志到 MaxCompute 是日志服务的一个功能,能够帮助您最大化数据价值。您可以自己决定对某个日志库是否启用该功能。一旦启用该功能,日志服务后台会定时把写入到该日志库内的日志投递到 MaxCompute 对应的表格中。 使用限制 数加控制台创建、修改投递配置必须由主账号完成,不支持子账号操作。 投递MaxCompute是批量任务,请谨慎设置分区列:保证一个同步任务内处理的数据分区数小于512个;用作分区列的字段值不能包括/等MaxCompute保留字段 。配置细节请参考下文投递配置说明。 不支持海外Region的MaxCompute投递,海外Region的MaxCompute请使用dataworks进行数据同步。国内Region投递支持如下: 日志服务Region MaxCompute Region 华北1 华东2 华北2 华北2、华东2 华北3 华东2 华北5 华东2 华东1 华东2 华东2 华东2 华南1 华南1、华东2 香港 华东2 功能优势 日志服务收集的日志除了可以被实时查询外,还可以把日志数据投递到大数据计算服务MaxCompute(原ODPS),进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势: 使用便捷 您只需要完成2步配置即可以把日志服务Logstore的日志数据迁移到MaxCompute中。 避免重复收集工作 由于日志服务的日志收集过程已经完成不同机器上的日志集中化,无需重复在不同机器上收集一遍日志数据后再导入到MaxCompute。 充分复用日志服务内的日志分类管理工作 用户可让日志服务中不同类型的日志(存在不同Logstore中)、不同Project的日志自动投递到不同的MaxCompute表格,方便管理及分析MaxCompute内的日志数据。 说明 一般情况下日志数据在写入Logstore后的1个小时导入到MaxCompute,您可以在控制台投递任务管理查看导入状态。导入成功后即可在MaxCompute内查看到相关日志数据。判断数据是否已完全投递请参考文档。 结合日志服务的实时消费,投递日志数据到MaxCompute的数据通道以及日志索引功能,可以让用户按照不同的场景和需求、以不同的方式复用数据,充分发挥日志数据的价值。 配置流程 举例日志服务的一条日志如下: 16年01月27日20时50分13秒 10.10.*.* ip:10.10.*.* status:200 thread:414579208 time:27/Jan/2016:20:50:13 +0800 url:POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1 user-agent:aliyun-sdk-java 日志左侧的ip、status、thread、time、url、user-agent等是日志服务数据的字段名称,需要在下方配置中应用到。 步骤1 初始化数加平台 在日志服务的控制台Logstore列表单击日志投递列的MaxCompute。 自动跳转到初始化数加平台的页面。MaxCompute默认为按量付费模式,具体参见MaxCompute文档说明。 查看服务协议和条款后单击确定,初始化数加平台。 初始化开通需10~20秒左右,请耐心等待。如果已经开通数加及大数据计算服务MaxCompute(原ODPS),将直接跳过该步骤。 步骤2 数据模型映射在日志服务和大数据计算服务MaxCompute(原ODPS)之间同步数据,涉及两个服务的数据模型映射问题。您可以参考日志服务日志数据结构了解数据结构。 将样例日志导入MaxCompute,分别定义MaxCompute数据列、分区列与日志服务字段的映射关系: MaxCompute 列类型 MaxCompute 列名(可自定义) MaxCompute 列类型(可自定义) 日志服务字段名(投递配置里填写) 日志服务字段类型 日志服务字段语义 数据列 log_source string __source__ 系统保留字段 日志来源的机器 IP。 log_time bigint __time__ 系统保留字段 日志的 Unix 时间戳(是从1970 年 1 月 1 日开始所经过的秒数),由用户日志的 time 字段计算得到。 log_topic string __topic__ 系统保留字段 日志主题。 time string time 日志内容字段 解析自日志。 ip string ip 日志内容字段 解析自日志。 thread string thread 日志内容字段 解析自日志。 log_extract_others string __extract_others__ 系统保留字段 未在配置中进行映射的其他日志内字段会通过 key-value 序列化到json,该 json 是一层结构,不支持字段内部 json 嵌套。 分区列 log_partition_time string __partition_time__ 系统保留字段 由日志的 time 字段对齐计算而得,分区粒度可配置,在配置项部分详述。 status string status 日志内容字段 解析自日志,该字段取值应该是可以枚举的,保证分区数目不会超出上限。 MaxCompute 表至少包含一个数据列、一个分区列。 系统保留字段中建议使用 __partition_time__,__source__,__topic__。 MaxCompute 单表有分区数目 6 万的限制,分区数超出后无法再写入数据,所以日志服务导入 MaxCompute表至多支持3个分区列。请谨慎选择自定义字段作为分区列,保证其值是可枚举的。 系统保留字段 __extract_others__ 历史上曾用名 _extract_others_,填写后者也是兼容的。 MaxCompute 分区列的值不支持”/“等特殊字符,这些是 MaxCompute 的保留字段。 MaxCompute 分区列取值不支持空,所以映射到分区列的字段必须要在日志里存在,空分区列的日志会在投递中被丢弃。 步骤3 配置投递规则 开启投递。 初始化数加平台之后,根据页面提示进入LogHub —— 数据投递页面,选择需要投递的Logstore,并单击开启投递。 您也可以在MaxCompute(原ODPS)投递管理页面选择需要投递的Logstore,并单击开启投递以进入LogHub —— 数据投递页面。 图 1. 开启投递 配置投递规则。 在 LogHub —— 数据投递页面配置 字段关联等相关内容。 图 2. 配置投递规则 配置项含义: 参数 语义 投递名称 自定义一个投递的名称,方便后续管理。 MaxCompute Project MaxCompute项目名称,该项默认为新创建的Project,如果已经是MaxCompute老客户,可以下拉选择已创建其他Project。 MaxCompute Table MaxCompute表名称,请输入自定义的新建的MaxCompute表名称或者选择已有的MaxCompute表。 MaxCompute 普通列 按序,左边填写与MaxCompute表数据列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 MaxCompute 分区列 按序,左边填写与MaxCompute表分区列相映射的日志服务字段名称,右边填写或选择MaxCompute表的普通字段名称及字段类型。 分区时间格式 __partition_time__输出的日期格式,参考 Java SimpleDateFormat。 导入MaxCompute间隔 MaxCompute数据投递间隔,默认1800,单位:秒。 该步会默认为客户创建好新的MaxCompute Project和Table,其中如果已经是MaxCompute老客户,可以下拉选择其他已创建Project。 日志服务投递MaxCompute功能按照字段与列的顺序进行映射,修改MaxCompute表列名不影响数据导入,如更改MaxCompute表schema,请重新配置字段与列映射关系。 日志服务数据的一个字段最多允许映射到一个MaxCompute表的列(数据列或分区列),不支持字段冗余。 参考信息 __partition_time__ 格式 将日志时间作为分区字段,通过日期来筛选数据是MaxCompute常见的过滤数据方法。 __partition_time__ 是根据日志time字段值计算得到(不是日志写入服务端时间,也不是日志投递时间),结合分区时间格式,向下取整(为避免触发MaxCompute单表分区数目的限制,日期分区列的值会按照导入MaxCompute间隔对齐)计算出日期作为分区列。 举例来说,日志提取的time字段是“27/Jan/2016:20:50:13 +0800”,日志服务据此计算出保留字段__time__为1453899013(Unix时间戳),不同配置下的时间分区列取值如下: 导入MaxCompute间隔 分区时间格式 __partition_time__ 1800 yyyy_MM_dd_HH_mm_00 2016_01_27_20_30_00 1800 yyyy-MM-dd HH:mm 2016-01-27 20:30 1800 yyyyMMdd 20160127 3600 yyyyMMddHHmm 201601272000 3600 yyyy_MM_dd_HH 2016_01_27_20 请勿使用精确到秒的日期格式:1. 很容易导致单表的分区数目超过限制(6万);2. 单次投递任务的数据分区数目必须在512以内。 以上分区时间格式是测试通过的样例,您也可以参考Java SimpleDateFormat自己定义日期格式,但是该格式不得包含斜线字符”/“(这是MaxCompute的保留字段)。 __partition_time__ 使用方法 使用MaxCompute的字符串比较筛选数据,可以避免全表扫描。比如查询2016年1月26日一天内日志数据: select * from {ODPS_TABLE_NAME} where log_partition_time >= "2015_01_26" and log_partition_time < "2016_01_27"; __extract_others__使用方法 log_extract_others为一个json字符串,如果想获取该字段的user-agent内容,可以进行如下查询: select get_json_object(sls_extract_others, "$.user-agent") from {ODPS_TABLE_NAME} limit 10; 说明 get_json_object是MaxCompute提供的标准UDF。请联系MaxCompute团队开通使用该标准UDF的权限。 示例供参考,请以MaxCompute产品建议为最终标准。 其他操作 编辑投递配置 在Logstore列表投递项,单击“修改”即可针对之前的配置信息进行编辑。其中如果想新增列,可以在大数据计算服务MaxCompute(原ODPS)修改投递的数据表列信息,则点击“修改”后会加载最新的数据表信息。 投递任务管理 在启动投递功能后,日志服务后台会定期启动离线投递任务。用户可以在控制台上看到这些投递任务的状态和错误信息。具体请参考管理日志投递任务。 如果投递任务出现错误,控制台上会显示相应的错误信息: 错误信息 建议方案 MaxCompute项目空间不存在 在MaxCompute控制台中确认配置的MaxCompute项目是否存在,如果不存在则需要重新创建或配置。 MaxCompute表不存在 在MaxCompute控制台中确认配置的MaxCompute表是否存在,如果不存在则需要重新创建或配置。 MaxCompute项目空间或表没有向日志服务授权 在MaxCompute控制台中确认授权给日志服务账号的权限是否还存在,如果不存在则需要重新添加上相应权限。 MaxCompute错误 显示投递任务收到的MaxCompute错误,请参考MaxCompute相关文档或联系MaxCompute团队解决。日志服务会自动重试最近两天时间的失败任务。 日志服务导入字段配置无法匹配MaxCompute表的列 重新配置MaxCompute表格的列与日志服务数据字段的映射配置。 当投递任务发生错误时,请查看错误信息,问题解决后可以通过云控制台中“日志投递任务管理”或SDK来重试失败任务。 MaxCompute中消费日志 MaxCompute用户表中示例数据如下: | log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ | 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 | +------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+ 同时,我们推荐您直接使用已经与MaxCompute绑定的大数据开发Data IDE来进行可视化的BI分析及数据挖掘,这将提高数据加工的效率。 授予MaxCompute数据投递权限 如果在数加平台执行表删除重建动作,会导致默认授权失效。请手动重新为日志服务投递数据授权。 在MaxCompute项目空间下添加用户: ADD USER aliyun$shennong_open@aliyun.com; shennong_open@aliyun.com 是日志服务系统账号(请不要用自己的账号),授权目的是为了能将数据写入到MaxCompute MaxCompute项目空间Read/List权限授予: GRANT Read, List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com; MaxCompute项目空间的表Describe/Alter/Update权限授予: GRANT Describe, Alter, Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com; 确认MaxCompute授权是否成功: SHOW GRANTS FOR aliyun$shennong_open@aliyun.com; A projects/{ODPS_PROJECT_NAME}: List | Read A projects/{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update

2019-12-01 23:11:17 0 浏览量 回答数 0

问题

【案例】从hadoop框架与MapReduce模式中谈海量数据处理

jack.cai 2019-12-01 21:00:28 15859 浏览量 回答数 3

问题

SaaS模式云数据仓库MaxCompute 百问百答合集(持续更新20200921)

亢海鹏 2020-05-29 15:10:00 15821 浏览量 回答数 4

问题

Git 改变了分布式 Web 开发规则:报错

kun坤 2020-06-08 11:09:24 3 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站