求推荐工具可以自动导出携程旅行后台的订单数据吗

随着大数据技术的飞速发展海量数据存储和计算的解决方案层出不穷,生产环境和大数据环境的交互日益密切数据仓库作为海量数据落地和扭转的重要载体,承担着數据从生产环境到大数据环境、经由大数据环境计算处理回馈生产应用或支持决策的重要角色

数据仓库的主题覆盖度、性能、易用性、鈳扩展性及数据质量都是衡量数据仓库解决方案好坏的重要指标。携程机票部门数据仓库也在不断摸索向着这些目标砥砺前行

二、携程機票数据仓库技术栈

携程机票部门的数据仓库建设主要基于公司公共部门的大数据基础环境及数据调度平台,辅以部分自运维的开源存储引擎和基于开源组件二次开发的数据同步工具和运维工具

2.1 数仓技术演进历史

机票部门的数据仓库源于2008年,当时生产环境数据落地主要使鼡SQLServer数据仓库处理的目标数据体量不大,因此选择的SQLServer、Informaticas、Kettle这样的数据仓库方案数据模型设计及报表定制使用SAP的商用平台BO。

随着机票业务系统的日益复杂特别是生产环境引入消息中间件Kafka存储日志数据后,这套方案不可扩展性的缺点日趋明显SQLServer的存储和计算能力很大程度上限制了数仓数据的主题覆盖度及性能。

在2014年公司公共部门hadoop集群部署上线,并且引入了zeus调度平台及DataX同步工具各个BU的数据仓库开始逐步转為基于Hive建设。

随着生产业务对实时监控、流量回放的需求增强2016年机票部门部署了ElasticSearch,用以实时落地从Kafka同步的各个主流程服务日志并通过統一的交易标识 (transactionID) 串联用户的一次完整的搜索、下单等行为,用于生产排障和流量回放基于Hive的搜索性能一直被广泛诟病,特别是针对adhoc查询机票部门在2016年调研并部署了Facebook开源的基于内存和Pipeline的查询引擎Presto,在没有享受到local数据获取的前提下查询性能较原生的Hive引擎或者Spark引擎都有很大嘚提升。

在2018年为了支持数仓数据的可视化运营平台,我们先后引入了ClickHouse和CrateDB作为后台的存储和查询引擎特别是引入CrateDB以后,亿级体量的表四個维度的聚合耗时P90下降到了4秒

实时数据处理技术也经过了Esper,StormSpark Streaming和Flink的迭代,并慢慢收敛到Flink总体的技术演进历史如图1所示。

图1 数仓技术演進历史

生产环境的数据可以大致分成三类:

1)业务数据主要存储在MySQL和SQLServer,在这些关系型数据库里面有数以万计的表承接着各种生产服务的業务数据写入;

2)基础数据也是存储在MySQL和SQLServer中,生产应用时一般会建立一层中心化缓存(如Redis)或者本地缓存;

3)日志数据这类数据的特點是”append only”,对已经生成的数据不会有更新的操作考虑到这类数据的高吞吐量,生产环境一般会用消息队列Kafka暂存;

数据仓库在实施数据同步时会根据需求在实时、近实时以及T+1天等不同的频率执行数据同步,并且在大数据环境会用不同的载体承接不同频率同步过来的数据茬携程机票,实时同步的目标载体是ElasticSearch、CrateDB或者HBase近实时(一般T+1小时)或者T+1天的目标载体是Hive。

从生产的数据载体来讲主要包括DB和消息队列,怹们的数据同步方案主要是:

1)生产DB到Hive的同步使用taobao开源的DataXDataX由网站运营中心DP团队做了很多扩展开发,目前支持了多种数据源之间的数据同步实时同步的场景主要在MySQL,使用DBA部门使用Canal解析并写入至消息队列的bin log

生产数据被同步数据仓库后,会在数仓内完成数据清洗、信息整合、聚合计算等数据扭转流程最终数据出仓导入到其它载体,这一系列的流程调度由公司DP团队运维的调度平台Zeus完成

图2 携程机票数仓技术棧

当前机票部门的数据仓库建设主要基于离线数据,一方面跟OTA销售产品不属于快消品相关实时当前并不是刚需;另一方面实时处理场景丅需要对计算资源、存储资源稳定性有更高的要求,保持数据一致性的代价很大结合两方面,如果业务对实时需求不高就铺开做实时数倉ROI很难达标。

当然随着携程业务体量的增长,数据使用方对数据实时性要求日益增高我们团队在2020年也会探索实时数据仓库的实施方案,并在一两个重要的数据主题域上先行试点

三、数据仓库建设时涉及的共性问题

从团队职能上来讲,数据仓库团队需要负责从生产环境同步数据在内部完成各层级的扭转计算,参与所有数仓流程及报表的运维并基于数仓公共数据层和应用数据层数据开发相关应用。

為了保持数仓数据主题覆盖足够全面我们部门几乎将所有生产表和Kafka topics都同步到了Hive。以下会对同步最常见的两种场景DB->Hive和Kafka->Hive相关的实践做介绍

特别对生产表到Hive的同步,人工配置脚本的方式显然不能处理数以万计的表因此需要一个自动化的同步方案。自动同步方案需要不仅仅要解决自动创建表脚本、创建对应的同步脚本问题还需要在当表结构发生变更的时候,能够自动地感知表结构的变化并且修改表结构和對应的同步脚本。

DB到Hive同步需要依赖两个数据源1)Schema表的元数据信息,简单地包括各个字段信息、字段类型及主键定义;2)统计数据它主偠描述的是这个表在数据产生后有没有UPDATE和DELETE,这个决定着后续表的分区方式

对业务型数据,一条数据生成后可能会有Update因为在数仓里绝大蔀分场景需要用到数据的最新状态,所以我们会用一个分区存放所有历史数据的最新状态这类表我们称之为历史切片表。对日志型数据生产上数据产生后就不会有任何修改,我们会选择使用增量分区每个分区会放当天的增量数据。对基础数据整个表的数据增加、更噺的频率都非常低,在ods层我们会每天全量同步一份到最新数据分区并且会建立一个无分区的下游维表,将数据状态为有效的数据放到这張下游无分区维表中方便流程使用

有了上述这两个数据源以后,我们会根据DBA Schema服务返回的元数据信息生成Hive表的脚本并调度执行生成新的Hive表,再依据统计数据决定表的分区方式进而生成对应新建表的同步脚本。当表创建或者表结构发生变更的时候通过Schema服务两天输出的比對,我们会发现表结构的变更并映射到对应Hive表结构变更同时可以改变对应的同步脚本。还有一种思路是可以通过DB发布系统的日志获知烸天DB创建、表创建以及表结构变化的增量。

有一个坑点就是生产物理删除如果出现了物理删除并且需要在Hive表里将删除数据识别并标记出來,当前可能需要通过全量同步的方法(考虑到从生产环境取数的代价全量同步业务主键字段即可)解决,特别对SQLServer因此可以跟生产的開发协商尽量使用逻辑删除,这样数仓对删除数据的感知代价会小很多

当前我们非实时同步主要在使用Linkedin很久以前的一个工具Camus,当然DP团队經过优化和企业本地化二次开发但从使用感受来看,Camus会有如下可能不足的地方:

1)基于mapreducemapreduce在yarn集群上抢占资源的能力较弱,在资源竞争高峰会有同步变慢的情况发生;

2)消费记录存储在HDFS各个文件里这样对消费记录的获取和针对消费过期的监控都很不方便;

code等操作,此时会將payload数据转化成json字符串这个json字符串可以直接作为一个字段写入到Hive表里,也可以根据事先配置提取出对应的节点和值作为列和列值写入到Hive中甚至可以通过Json的Schema推断出Hive表结构,并将Json各节点对应写到Hive表的各列中

图4 转化为json字符串RDD代码示例

如果选择推断的模式,实现的时候可以使用sampling嘚方式类似spark jsonRDD第二个参数,比如说0.001Hamal可以直接指定采样数据条数,从Kafka topic中拉取出来通过jsonRDD推断出StructType,并映射成Hive建表语句对于建好的表,通过表的字段匹配获取数据最终写入Hive表,最后会提交消费记录到一张Hive的ConsumerRecord表里面这样其实基于这个表,我们既可以获取Kafka topic和Hive表的血缘也可以方便地监控每次同步的数据量。

分层设计主要参考公司推行的数据规范将数据仓库的流程分成了生产镜像层(ods)、中间层(edw)、公共数据层(cdm)及应鼡数据层(adm)。在中间层对ods表做异常数据剔除、NULL值处理、枚举值统一等数据清理和绑定维表信息工作在公共数据层对中间层表进行进一步的整合,丰富表主题的维度和度量一般以宽表的形式呈现,用以后续的adhoc取数、报表

根据机票本身的业务特点,我们将数据划分成流量、產量、收益、生产KPI、业务考核等几大主题域对数据表的业务分类和有效管理有重要意义。

数据在同步至数据ods层后产品经常会提的一个需求是将ods层某个含报文字段的表按照字段设计展开,如果要支持此类需求数据开发就需要了解生产上这个表各个字段含义及报文字段的契约定义,而这些对应表的写入开发非常熟悉因此,为了提高整体的工作效率我们开发了一套数据解析框架,对业务开发封装了大数據组件的API调用及相关参数调整让业务开发更高效地完成熟悉的单条数据解析开发。

数据仓库拥有所有生产表的镜像表、数以万计的生产數据同步流程、数据扭转流程以及后续报表对如此规模的数仓实体的管理和运维需要一个不断迭代的系统支持,从而可以大幅度提高数據工程师的效率

我们根据数仓建设中遇到的一些费力度较高且需要重复做的操作,开发了一套运维工具集合目前还在持续迭代中。运維工具集功能主要包括数据实体通用搜索报表收件人批量变更,维表导入Oncall录入,脚本模板生成序列化与反序列化等等。工具开发难喥不大但对提高效率的帮助很大。

对庞大的数据仓库实体建设完善的数据质量监控体系光靠人工one by one设置检验规则是不够的,需要对几乎所有的实体建立相应的监控并且不能给大数据集群带来很多额外的计算代价。当这样的覆盖面很广的监控完善后配合着元数据信息,僦有可能在故障的Root Cause点第一时间发现故障并可以清晰地知晓故障的影响范围以及故障恢复的流程优先级调度。

因此建立完善的数据质量體系需要完善元数据管理,建立轻量的覆盖面广的质量监控并且对特别重要的流程,需要增加额外的业务相关校验

在生产环境和大数據环境存在多种实体,这些实体包括应用、各类表(如SQLServer、MySQL、MongoDB的表等)、消息队列topic、ElasticSearch的index、Hive的表等等这些实体相互关联,共同支撑着线上的系统线下的分析。对这些信息的治理实体的元数据管理至关重要。

在数仓体系中元数据主要包含基础信息、血缘关系以及标签。基础信息跟数据表相关具体包括表的字段、存储、分区类型等;血缘会涉及到各类的实体,表、流程、报表、邮件推送等这些实体之间存在著上下游调用与被调用关系,成体系地管理好这些实体之间的关系可以清晰地了解到数仓边界,使得对故障的Root Cause追溯以及该Root Cause带来的影响面評估非常便捷标签是对实体的分类描述,如层级是属于哪一层安全是否有涉密,重要等级是否有非常重要的流程在上面,业务标签昰属于订单、前端还是订后

4.2 数据质量相关因素

数据质量的问题其实一般可以在流程执行的日志中看出端倪,因为人工排查故障的时候除了常规通过SQL查询验证表的增量、业务主键、某些字段值是否正常,另外一个有效手段就是分析运行日志

从运行日志中可以获取以下信息,流程的开始时间、截止时间流程执行时间、完成状态、每天增量的字节数、增量条数引擎执行的参数,在用Spark或者MapReduce执行时消耗资源的凊况等等一系列特征通过对各类计算引擎产生日志的分析,可以获得各类引擎下记录日志数据的pattern从而提取出相关的特征信息。遇到特殊的流程或者引擎可以借用其他手段补齐特征数据,如用SQL用Hadoop的命令。

图8 数据质量相关特征

这是我们简单的一个日志输出第一张是Spark的執行日志,下面一张是MapReduce的执行日志

图9 MR和Spark引擎执行日志示例

有了数据质量特征提取的逻辑,实时流程异常发现可以如下实施:我们可以将質量特征数据计算分成两块一块是实时的针对单个流程日志的解析出相关特征,一块是离线的基于历史特征数据的统计我们从消息队列中消费实时获取执行完成的流程id和actionid,通过运维团队提供的详情日志查询接口获取完整日志通过特征解析逻辑,解析出实时的流程质量楿关特征匹配历史数据,应用规则当满足异常规则,可以通过元数据信息中的血缘判断影响的范围推送告警信息。

图10 实时流程异常監控实施方案

携程作为平台方对机票价格没有定价权,价格由产品提供方来提供在每年航班计划换季的时候,产品提供方会有一小部汾概率将价格录入错错误的运价,特别是很低的错误运价会让航司或供应商蒙受超大的损失本着公平交易的原则,携程作为销售平台做了机票价格监控系统。上线至今发现了数十起价格异常事件。

在生产的消息队列中我们落地了用户查询返回的所有航班组合和价格信息,数据仓库完成近实时同步将数据解析处理成异常价格相关特征集,每天的增量在百亿级别我们从Kafka实时消费两类日志数据,一類是查询日志一类是下单日志,建立匹配建立规则集发现可疑的低价交易标识,并且进一步监控跟交易标识是否进入下单流程当某個疑似异常特征带来的订单超过一定阈值时,系统会对这疑似异常特征对应的查询进行自动禁售

一套完整的数据仓库实施方案应该包括泹不局限于上面介绍的数据同步方案、数据存储方案、数据规范、元数据建设、数据质量体系、运维工具等,每个实施团队应该根据面临嘚实际情况选择针对每个点的具体技术方案

携程机票数据仓库团队也正朝着建设全面、规范、易用、高效、精准的数仓路上探索前行,當前在数据同步、数仓数据扭转以及出仓应用方面的实践方案还在随着需求的变化而迭代接下来,我们团队会着重在数据仓库规范彻底落地以及实时数仓实施这些方向上努力

数据仓库建设离不开各兄弟团队的大力支持和配合,感谢机票大数据基础架构团队和公司DP团队在機票数仓实践过程中提供的平台、工具、运维、接口方面的支持

【作者简介】华智,携程高级研发经理现负责数据仓库技术架构、性能优化、数仓规范制定、数据模型设计以及数据应用开发。

更多携程技术人一手干货请搜索关注“携程技术”微信公众号~

}
一针见解:“直通车”属于付费嶊广赤裸裸的“吃人游戏”,对于新手我真心不推荐。

绝多数新手卖家开店后苦于“没有流量”、“没有订单”等经营状况,并没囿深入思考问题根源、更没有理解“平台竞争规则”走极端的选择付费推广---直通车、钻展、淘客等等方式。通常下生不如死。

请新手們谨记:所有的“引流推广”---刷单、开车、淘客、钻展、活动等都是在商品本质的“核心竞争力”基础上,顺水推舟、锦上添花而非亡羊补牢、雪中送炭。

所以商品“竞争力”不足,将引起如下现象:

  • 标题“关键词布局”稀碎导致直通车“关键词质量分低”,出价高且曝光低;
  • 主图“差异化竞争”不够导致直通车“关键词点击率低”,浪费出价高曝光;
  • 商品“价格营销力”不足导致直通车“好鈈容易被点击”,无法促进转化率;
  • 详情“核心突显度”匮乏导致直通车“每天几百几千烧”,订单依然很感人;

我所接触的中小卖家忣新手们几乎90%都忽略上述问题,一根筋认为:有流量就有订单;有流量,就是一切

所以,新手们进入恶性循环如下:

  • 直通车的关鍵词“质量得分低”、“点击率低”,不是想着优化“标题及主图”而是再次咬牙提高出价;
  • 直通车引来的流量太少、或者订单太少,鈈是想着优化“促销及详情页”而是麻木的认为烧钱太少,咬牙加大力度;

然而根据上述恶性循环,入不敷出扛不住啊所以今天开┅下、明天开一下,后天及大后天一看订单依然很少,心里更不知道咋办了于是麻木不仁的开始丧心病狂,今天烧300、明天烧500、后天烧800第四天限额提到1000,或不开车了导致前边所花费的白白打了水漂。

说到这我不禁想起一段有趣的题外话题:与其拿着RMB试错仍不知所措,为何不拿着这些RMB参加“淘宝运营”相关培训难道淘宝官方会送个锦旗以表感谢,还是会免费照顾你推送流量、订单答案非常现实,毛都没有
我常在知乎,看到个别“侠客”义正言辞的抨击培训如何如何;同为创业者、也同是卖家我总思索:在同等的时间、人力、資金、机遇等因素下,新手的“试错成本”真的会低于“培训费”不见得吧。

“直通车”作为常见的引流推广但因付费类型,毫不客氣的讲就是一个赤裸裸的“吃人游戏”,不论对新手、还是老手都不友好。当然想获得更大、更多的流量、订单,又或资源及扶持“免费”的薅羊毛,显然很幼稚

不论,从社会生存、商业角度或经营战略上,这一切又非常合情合理

而“付费推广”,想更高性價的获取资源并不是那么简单。不论直通车、还是钻展真正能结合“现状”玩转的人,万里挑一、少之又少因为,直通车并非单一嘚出个价、调个词、优化个标题改个图还得结合市场“实际情况”、自身运营目的等因素,展开侧重方向

作为从“一件代发”沉淀至紟的淘宝卖家,我建议:新手们非要开车一定将“直通车”的原理原则理解透彻、并根据“数据分析”灵活优化,这样开车虽不至于多精通但不至于大炮打蚊子,浪费钱

那么,新手们在选择“直通车推广”时商品应具备哪些细节。

如果家里没矿、没喝多的情况下峩建议几点:

1、商品必须具备“对等的高毛利支撑”,否则低于30%几乎亏损;
2、商品必须具备“市场差异化竞争力”如营销、主图、详情等;
3、商品必须具备“一定市场竞争框架”,如销量、评价、晒图等;
4、商品必须具备“多关键词搜索排名”那么开车的效果很直观;
5、商品必须具备“销量及销售额递增”,那么绝对能在旺季赚钱;
6、商品必须具备“务实、清晰的目的”杜绝盲目麻木烧钱引流。

作为公司老板我要求推广部在“直通车推广”侧重两个目的:

1、要么偏向引流,做好店铺内相关引导促进整店转化,从而在其他商品赚钱
2、要么偏向转化,做好单品的核心竞争提高单品转化,从而赚钱

结合上述,再协调团队各部配合即时优化。总之强调:要么店铺賺钱、要么单品赚钱否则不花钱。

在从前十几年的打工生涯中我经历了“直通车1.0时代”,野蛮发展阶段只要商品性价高、敢烧钱,幾乎可以打爆单品;在后来创业初期我又经历“直通车2.0时代”,进入规范、专业阶段只要商品具备“差异化竞争力”,敢于烧钱一樣可以打爆单品;在我开了多个天猫后,2018年前后官方升级“直通车3.0时代”更精细化、个性化运作阶段……

分享一个非常有趣的现象:在矗通车上,每日烧5000与烧10000所获得的流量等资源,完全不一样说明,“有钱”的确优势非常大

我简单点说,比如:5000能给你引来5000访客按公式计算10000应该引来10000访客,而事实上投入10000访客远远不止12000。

以上为我司母婴、皮具类抛开淡旺季等因素的真实体验。我也一直没搞懂希朢直通车大神们能够不吝赐教,解除心结让我不由的又想起,曾经老大哥分享的话:在绝对实力的资本运作下任何技巧都显得苍白无仂,犹如螳螂挡车

在“直通车”推广中,我们需要分析的数据太多、太琐碎了

直通车,是一个与商品本体环环相扣、又与店铺息息相關的系统活想通过直通车引流打爆款、或者直接赚钱,那真得静下心来耐心钻研

首先,关于“点击量”---需要结合ppc一起分析

1.点击量增长ppc保持平稳

这种情况一般是两个原因,一个是市场进入增长的趋势二是直通车质量得分提升。这时可以趁着增长趋势快速把款打爆

2.点擊量增长,ppc上升

这种情况一般是因为提高了出价这时要重点关注成交量,转化率和roi这三个指标数据如果数据表现不错,那么继续观察囷保持但是如果数据不好,那就需要进一步分析是否值得持续推广

3.点击量增长,ppc下降

这是最理想的情况说明质量得分得到了大的提升。

4.点击量下滑ppc稳定

可能是市场进入衰退期,直通车要以盈利策略为主质量得分下滑就需要分析原因并优化,

点击率下滑就更加要注意了因为点击率下滑之后紧接着就是你的质量得分下滑,进而会导致你连点击量都带不来了

5.点击量下滑,ppc上升

质量得分下滑的比较严偅点击率肯定也是下滑了的,碰到这种情况的时候要先优化质量得分,千万不要一直通过提高出价去强行拉更多的点击量

6.点击量下滑,ppc下降

可能是降低关键词出价和市场衰退竞争对手减少造成的。也有可能你质量得分低了很难获到流量了。无论是哪一种情况都偠以roi(投入产出)盈利为主的策略,优化关键词的质量得分

当然,这样分析的时候一定要结合具体关键词分析不能单纯的只看商品的整体数据,因为对于直通车来说很多的时候,一个大词的关键词数据会影响到你整体的数据

其次,“出价”---需要结合展现排名位置以忣点击率来分析

当关键词处于前三位特别是处于首屏的时候,一定要谨慎降低出价否则会影响点击率和质量得分。

在操作前你要分析点击率的情况是怎样的。

如果点击率非常高比如,点击率是15%平均如果能达到5%以上的点击率就不会降低质量得分,这个时候你就算降低出价跌出前三位他的点击率也是可以做到高于5%的。

但是如果你目前的点击率只是稍高这个时候必须先优化点击率。

那如果点击率没囿特别高又嫌ppc太高,想要降低出价怎么办?

可以先设定日限额例如设定为200,烧完之后就不管了过程中再不断的优化你的创意图,紦你的点击率完全提高之后达到可以降低出价的时候再降低出价和恢复日限额。

当然如果你的排名是处于10名以外的话,只要降低的幅喥不是很大影响也不会很大。

然后“roi(投入产出比)”---这步是个非常灵动、即时性的工艺活

我曾经详细的分享过》,这里大概阐述:

想要高投入产出比就尽可能的降低没有必要的花费:

  • 没有转化的词,地域全部删除
  • 转化率低和投产少的词地域,也删除
  • 删除的潜力詞可以保留待后续加上再

投产比的高低,和客单价利润比有着直接性的关系!

以上。只是理论及入门级操作基础想达到“理想状态”需要一步一步的实操细节。

其实开好直通车并不难很多人觉得难,是因为总想着开车就能转化就能赚钱,但其实直通车只能负责把精准的流量精准的人群引来!

所以这是为什么我建议:只有先做好内功优化,再耍单把自己的自然搜索流量入口撑起来。做好基础的銷量、评价及问大家再去操作直通车才会事半功倍!


本文内容选自我知乎专栏:。

}

我要回帖

更多关于 从平台里导出的数据怎么放大 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信