presto

从 Exadata 到 TiDB,中通快递 HTAP 实践

六眼飞鱼酱① 提交于 2020-08-13 14:48:27
作者介绍:朱志友,中通快递大数据架构师。 中通快递背景介绍 中通快递业务的规模目前是世界第一,是第一个达成年百亿业务量的快递企业,在 2019 年的双十一更是完成了订单量超过 2 亿的佳绩。中通科技是中通快递旗下的互联网物流科技平台,拥有一支千余人规模的研发团队,秉承着“互联网+物流”的理念,与公司的战略、业务紧密的衔接,为中通生态圈的业务打造全场景全链路的数字化平台服务。 上图展示了快递物流的生命周期,简单举个例子,大家如果在某宝上下了一个订单,从付款结束开始,到商家打单,大家的包裹基本上就开启了一个快递的旅程。简单的介绍可以分为五个字,收发到派签,整个物流的全链路中可以拆解成以下的关键节点,客户下单之后快递员的揽收,揽收网点的建包,建包之后会把快递交到中心,至此快递就开启了转运和运输的过程,最终负责派件的末端网点会根据三段码的解析去末端的中心把快递拉到末端的快递网点进行分拣,分拣之后会指派到指定的快递员,进行派件,快递小哥会把快递送到客户的手里,客户完成签收,在我们看来这一票件就完成了快递的全链路的生命周期。在每个环节中会产生大量的数据,对每个环节的每一个数据我们都会进行相关的分析,包括时效的监控。 2017 年的时候,我们就已经开始关注 TiDB ,那时候的关注点主要在解决一些分库分表的问题上,从 2018 年底开始调研测试大数据,我们主要想去解决存储和计算的问题,2019

别再写一摞if-else了!再写开除!两种设计模式带你消灭它!

…衆ロ難τιáo~ 提交于 2020-08-12 10:12:45
题外话:看完评论感觉杠精真的是多,这篇文章明显是在说,不要写一大堆if-else,一大堆是啥意思不懂么,我没有一句话说了不要写if-else。开头也给出了需求,在这种需求的前提下不要写if-else,没毛病吧???真的觉得毁三观了。。 代码洁癖狂们!看到一个类中有几十个if-else是不是很抓狂? 设计模式学了用不上吗?面试的时候问你,你只能回答最简单的单例模式,问你有没有用过反射之类的高级特性,回答也是否吗? 这次就让设计模式(模板方法模式+工厂模式)和反射助你消灭if-else! 真的是开发中超超超超超超有用的干货啊! 那个坑货 某日,码农胖滚猪接到上级一个需求,这个需求牛逼了,一站式智能报表查询平台,支持mysql、pgxl、tidb、hive、presto、mongo等众多数据源,想要啥数据都能通通给你查出来展示,对于业务人员数据分析有重大意义! 虽然各个数据源的参数校验、查询引擎和查询逻辑都不一样,但是胖滚猪对这些框架都很熟悉,这个难不倒她,她只花了一天时间就都写完了。 领导胖滚熊也对胖滚猪的效率表示了肯定。可是好景不长,第三天,领导闲着没事,准备做一下code review,可把胖滚熊惊呆了,一个类里面有近30个if-else代码,我滴个妈呀,这可让代码洁癖狂崩溃了。 // 检验入参合法性 Boolean check = false; if(DataSourceEnum

web前端开发学校分享前端一些小知识点

那年仲夏 提交于 2020-08-12 06:45:26
  一,主流浏览器及内核   Chrome——Webkit/blink   IE ——Trident   Firfox ——Gecko   Safari—— Webkit   Opera—— presto   二,css权重   !importent ——Infinity(正无穷)   行间样式 ——1000   id ——100   class/属性/伪类 ——10   标签/为元素 ——1   通配符—— 0   css的优先级取决于权重,权重间的进制是256.   三,行级 块级 行级块 元素   行级元素:1内容决定元素大小 2无法通过css改变宽高(span em a strong……)   块级元素:1独占一行 2可以改变宽高 (p div ul li form address……)   行级块元素:内容决定大小 可以改变宽高 (img)   四,定位   绝对定位:absolute:脱离原来位置,以最近父级定位,如果没有以文档顶端定位   相对定位:relative:保留自己以前的位置,并且以自己以前位置定位   五,margin俩bug   1,margin-top塌陷:子div在父div中 子div margin-top无效,除非子div margin-top值大于父级的,而且此时还带动父级一起移动。   父级div上边框消失了一样,给父级加上一个上边框可以解决

Apache Kylin v3.1.0 重点功能推介

冷暖自知 提交于 2020-08-10 02:10:44
Apache Kylin v3.1.0 已于上周正式发布,其中包含了许多值得一试的新功能,本文选择了 Presto 查询下压引擎、Flink 构建引擎、Kylin on Kubernetes 解决方案、新版 Hive 全局字典、增强的 Cube 迁移服务这五项重点功能进行介绍。 Presto 查询下压引擎 之前版本的 Kylin 提供了查询下压功能,该功能对于 Hive 数据源的下压有比较好的支持,但是对 Hive 以外的具有不兼容语法的数据源,用户就容易遇到因为种种方言不兼容而导致查询下压失败的问题。 为了解决这个问题,Kyligence 贡献了基于 Data Source SDK 开发的 Presto 查询下压引擎,该功能通过 Calicte 完成了Kylin 和 Presto 方言翻译,大大提升了查询下压的成功率。 Presto 下压引擎的使用文档请参考 : http://kylin.apache.org/docs/tutorial/query_pushdown.html 崭新的 Flink 构建引擎 Flink Engine 由腾讯贡献到 Kylin 社区(KYLIN – 3758)。在过去版本中,Kylin 只支持 MapReduce 和 Spark 两种构建引擎,为了扩大 Kylin 生态,进一步提升构建速度,Kylin v3.1.0引入了 Flink 作为构建引擎

玩转热门框架 用企业级思维 开发通用够硬的大数据平台

蓝咒 提交于 2020-08-08 05:58:44
课程分析了主流企业的大数据架构、带领大家构建自己的通用型大数据平台。从企业需求入手,构建集数据采集、数据存储、数据处理与分析、BI应用、权限管理、系统监控等于一体的大数据应用平台,内容涵盖各类开源组件基础知识、优化技巧、应用场景和常见面试问题等,帮助我们快速掌握大数据平台开发技术,迅速建立大数据技术的宏观的认识。最后实现了可视化展示。非常适合想要通揽大数据全貌、了解企业级开发的你 第1章 课程导学与学习指南 本章中将向大家介绍课程能学到什么、解决什么实际问题、项目成果展示,课程整体安排以及如何学习更高效。 第2章 认识企业中的大数据平台 为什么要有大数据平台?大数据平台究竟是为了解决什么问题产生的?如何判断一个大数据平台的好坏?在设计一个数据平台时,需要注意哪些,有什么步骤。各大企业现有的解决方案有哪些,常见的技术栈有哪些,我们自己设计的这个通用的大数据平台是什么结构。... 第3章 大数据平台 —— 数据仓库之离线&实时 你真的理解数据仓库是什么吗?数据仓库如何进行分层,为什么要分层呢?分层一定好吗?带你理解数据仓库,逐步掌握离线数仓工具Hive。对比离线数仓和实时数仓,了解实时数仓常见架构。 第4章 大数据平台——数据仓库之权限管理 解决三大问题:数仓安全问题,对比常见权限认证框架,使用Ranger开发数仓权限模块;数据来源问题,对常用数据采集工具进行介绍

知乎 Hive Metastore 实践:从 MySQL 到 TiDB

别说谁变了你拦得住时间么 提交于 2020-08-08 05:10:52
作者介绍:胡梦宇,知乎数据架构平台开发工程师 背景 Apache Hive 是基于 Apache Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并且提供了 Hive SQL 进行查询和分析,在离线数仓中被广泛使用。 Hive Metastore 是 Hive 的元信息管理工具,它提供了操作元数据的一系列接口,其后端存储一般选用关系型数据库如 Derby、 MySQL 等。现在很多除了 Hive 之外计算框架都支持以 Hive Metastore 为元数据中心来查询底层 Hadoop 生态的数据,比如 Presto、Spark、Flink 等等。 在知乎,我们是将元信息存储在 MySQL 内的,随着业务数据的不断增长,MySQL 内已经出现单表数据量两千多万的情况,当用户的任务出现 Metastore 密集操作的情况时,往往会出现缓慢甚至超时的现象,极大影响了任务的稳定性。长此以往,MySQL 在未来的某一天一定会不堪重负,因此优化 Hive 的元数据库势在必行。 在去年,我们做过数据治理,Hive 表生命周期管理,定期去删除元数据,期望能够减少 MySQL 的数据量,缓解元数据库的压力。但是经过实践,发现该方案有以下缺点: 数据的增长远比删除的要快,治标不治本; 在删除超大分区表(分区数上百万)的分区时,会对 MySQL 造成一定的压力,只能单线程去做

Kubernetes as Database: 使用kubesql查询kubernetes资源

白昼怎懂夜的黑 提交于 2020-08-06 04:24:10
写在前面 kubectl虽然查询单个的kubernetes资源或者列表都已经比较方便,但是进行更为多个资源的联合查询(比如pod和node),以及查询结果的二次处理方面却是kubectl无法胜任的。所以一直以来,我都有想法将kubernetes作为数据库进行查询。在去年,我开发了第二个版本的kubesql。相关信息在 https://xuxinkun.github.io/2019/03/11/kubesql/ ,代码留存在 https://github.com/xuxinkun/kubesql/tree/python 。这个版本较之我最早的spark离线方式已经有所改观,但是无法应对中型、甚至较小规模的集群,性能上存在较大问题。部署上也较为繁杂,且不够稳定,有一些bug(会异常退出)。而且对于label等字段都无法处理,可用性较差。我总起来不满意,但是一直没时间去重构。直到最近,听了关于presto的一个分享,我感觉重构的机会来了。 这一次kubesql完全抛弃了原有的架构,基于presto进行开发。这里摘抄一段presto的简介:presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题。presto具有丰富的插件接口

史上最全的大数据技术栈,有种冲动学习的既视感,你是否感受到了自己的不足?

泄露秘密 提交于 2020-08-05 04:19:44
前言 提起大数据,不得不提由IBM提出的关于大数据的5V特点: Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性) ,而对于大数据领域的从业人员的日常工作也与这5V密切相关。大数据技术在过去的几十年中取得非常迅速的发展,尤以Hadoop和Spark最为突出,已构建起庞大的技术生态体系圈。 下面我们通过一张图来了解一下目前大数据领域常用的一些技术,当然大数据发展至今所涉及技术远不止这些。 下面自底向上介绍各个层的主要项目。 1 采集层和传输层 Sqoop 在hadoop和关系型数据库之间转换数据。 Flume Flume是一个分布式的高可用的数据收集、聚集和移动的工具。通常用于从其他系统搜集数据,如web服务器产生的日志,通过Flume将日志写入到Hadoop的HDFS中。 Canal 数据抽取是 ETL 流程的第一步。我们会将数据从 RDBMS 或日志服务器等外部系统抽取至数据仓库,进行清洗、转换、聚合等操作。在现代网站技术栈中,MySQL 是最常见的数据库管理系统,我们会从多个不同的 MySQL 实例中抽取数据,存入一个中心节点,或直接进入 Hive。市面上已有多种成熟的、基于 SQL 查询的抽取软件,如著名的开源项目 Apache Sqoop,然而这些工具并不支持实时的数据抽取。MySQL Binlog

大数据PAZR集成ldap实操!what?

时间秒杀一切 提交于 2020-08-04 16:22:31
1.说明 p:presto a:allixop z:zeppelin r:rancher 分为三部分讲解 1.什么是presto+Alluxio,大数据presto+Alluxio集成详细部署说明 2.大数据zeppelin+rancher,docker的集成部署 3.presto+alluxio集成ldap实操测试,zeppelin+rancher集成ldap实操测试 1.1什么是presto 于内存的并行计算,Facebook推出的分布式SQL交互式查询引擎 多个节点管道式执行 支持任意数据源 数据规模GB~PB 是一种Massively parallel processing(mpp)(大规模并行处理)模型 数据规模PB 不是把PB数据放到内存,只是在计算中拿出一部分放在内存、计算、抛出、再拿 为什么要用&优点&特点 多数据源、支持SQL、扩展性(可以自己扩展新的connector)、混合计算(同一种数据源的不同库 or表;将多个数据源的数据进行合并)、高性能、流水线(pipeline) 1.2 presto架构 2.1什么是alluxio Alluxio(前身Tachyon)是世界上第一个以内存为中心的虚拟的分布式存储系统。它统一了数据访问的方式,为上层计算框架和底层存储系统构建了桥梁。 2.2Alluxio架构 Alluxio是大数据和机器学习生态系统中的新数据访问层

Extracting a numerical value from a paragraph based on preceding words

别来无恙 提交于 2020-07-31 04:09:26
问题 I'm working with some big text fields in columns. After some cleanup I have something like below: truth_val: ["5"] xerb Scale: ["2"] perb Scale: ["1"] I want to extract the number 2. I'm trying to match the string "xerb Scale" and then extract 2. I tried capturing the group including 2 as (?:xerb Scale:\s\[\")\d{1} and tried to exclude the matched group through a negative look ahead but had no luck. This is going to be in a SQL query and I'm trying to extract the numerical value through a