| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Trino开荒 -> 正文阅读 |
|
[大数据]Trino开荒 |
一. 概述1.1 Trino历史Facebook的数据仓库存储在少量大型Hadoop/HDFS集群。Hive是Facebook在几年前专为Hadoop打造的一款数据仓库工具。在以前,Facebook的科学家和分析师一直依靠Hive来做数据分析。但Hive使用MapReduce作为底层计算框架,是专为批处理设计的。但随着数据越来越多,使用Hive进行一个简单的数据查询可能要花费几分到几小时,显然不能满足交互式查询的需求。Facebook也调研了其他比Hive更快的工具,但它们要么在功能有所限制要么就太简单,以至于无法操作Facebook庞大的数据仓库。 rebranding PrestoSQL as Trino原名PrestoSQL,FB开发的用来和Hive配合的及席查询引擎(竞品:Impala 、Kylin、SparkSQL),随后开源,FB公司对Presto有很强的控制欲,想要控制它的下一步发展方向,甚至空降项目经理,Presto创世人及其团队集体离职,从此Presto分为PrestoSQL(创始人) & PrestoDB(FB控制),随后 Presto被fb注册商标??了,PrestoSQL无奈只能改为Trino(Dec 27, 2020) 1.2 文档对比从Trino & Presto文档对比来看,也是基本上… Trino要比Presto更活跃一点。两个社区各自都做了一些重大的更新,同时我们也看到两个社区也不是完全隔离的,一个社区作出了一个号的好的改进另外一个社区会及时的吸收过去,比如Trino对S3的读取速度进行了优化,Presto也Cherry Pick过去了,目前两者都在做Pushdown ,pushdown也是未来的发展方向 二. 架构2.1 Server types
? coordinator & worker 进程常驻,设计初衷就不是为批量数据处理设计的 容易OOM 2.2 Query explainCoordinate 解析…
2.2.1 划分任务一个查询按照 from(TableScan) 、limit 、join 、 Agg 、Output 划分成不同的 Fragment ? ? 2.2.2 Worker间基于内存流转三. SQL使用优化3.1 只选择使用的字段由于采用列式存储,选择需要的字段可加快字段的读取、减少数据量。避免采用*读取所有字段 3.2 过滤条件必须加上分区字段分区表减少磁盘的扫描,Trino能够更快的获取数据 3.3 合理使用Union尽量在数据源union完后在让Trino处理 避免在同一个数据源中使用Union 操作,比如一个MySQL中两张表,直接在Trino 中union的话会导致数据必须全部加载到内存,可以采用先在MySQL中union好 ,创建View,再使用Trino查询View,这样Trino会分批加载数据 3.4 Order by合理使用牵扯到全局排序的,数据需要发送到一个worker处理 3.5 Pushdown
? 四. SQL差异化4.1 关键字区分Trino 保留关键字
4.2 时间操作date timestamp等都需要声明类型 DATE ‘2001-08-22’
Time ZoneThe AT TIME ZONE operator sets the time zone of a timestamp:
p : timestamp 的秒的时间精度
? date_adddate_add(unit, value, timestamp) → [same as input]
? date_diffdate_diff(unit, timestamp1, timestamp2) → bigint#
? https://trino.io/docs/current/functions/datetime.html 4.3 Trino where 过滤‘’ ‘’ 会被认为是区分关键字,过滤用’ ’
4.4 OLAP不建议使用update insert分析型处理引擎,对于update insert处理会很慢,虽然现在已经支持了,但还是不建议直接使用 4.5 date 在 Trino & Tableau之间首先Trino 在时间比较的时候必须指定格式
参考文献:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:44:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |