大数据之Presto


前言

本文简单介绍了大数据中Presto的相关知识,包括Presto的基本概念、架构、特点以及使用Presto的注意事项


一、Presto概念

  Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。

  注意:虽然Presto可以解析SQL,但它不是一个标准的数据库。不是MySQL、PostgreSQL或者Oracle的代替品,也不能用来处理在线事务(OLTP)

二、Presto架构

在这里插入图片描述
  Presto的客户端将SQL命令发送给协调者coordinator,coordinator将SQL指令转化为Presto可以识别的计算任务并将其分发给worker;worker来执行这个任务,每一个worker执行一部分任务。

  Catalog是presto支持的数据源,一个数据源就是一个catalog,图中有三个数据源,hive,kafka,Redis;在配置每一个数据源时,都要定义一个对应的connector,并且在presto中的数据结构都是固定的(schema – database ,table – 表);所以presto可以做到多数据源的连表查询,因为它将数据结构统一了。

三、特点

3.1 优点

(1)Presto是基于内存运算,减少没必要的硬盘IO,所以更快。

(2)能够连接多个数据源,跨数据源连表查,如从Hive查询大量网站访问记录,然后从Mysql中匹配出设备信息。

3.2 缺点

(1)虽然能够处理PB级别的海量数据分析,但不是代表Presto把PB级别都放在内存中计算的。而是根据场景,如count,avg等聚合运算,是边读数据边计算,再清内存,再读数据再计算,这种耗的内存并不高。但是连表查,就可能产生大量的临时数据,因此速度会变慢,反而hive此时会更擅长。

(2)为了达到实时查询,可能会想到用它直连MySql来操作查询,这效率并不会提升,瓶颈依然在MySql,此时还引入网络瓶颈,所以会比原本直接操作数据库要慢。

四、注意事项

(1)能用分区字段进行过滤尽量用分区字段进行过滤;
  比如要取某一天的数据,用creat_time字段也可以过滤,但是这样会对整个表进行扫描,不如用分区字段进行过滤;

(2)使用groupby时,如果后面有多个属性列,要将基数大的列放在前面;

(3)使用join语句时,大表在左,小表在右;即大表分段,小表广播(将小表广播到每一个worker上,将大表分为几段,每一段一个worker,这样也可以实现join操作)

(4)不支持insert overwrite,只能先delete表,再insert into;

(5)时间比较时,mysql将时间当做字符串进行比较,但是在presto中,不可以,要加上timestamp标记
代码如下:

select * from table1 where t > '2021-11-23 00:00:00';

//Presto中的写法
select * from table1 where t > timestamp  '2021-11-23 00:00:00';

总结

本文简单介绍了大数据中Presto的相关知识,包括Presto的基本概念、架构、特点以及使用Presto的注意事项,如果有不足之处或者表述不当的地方欢迎大家指正

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用 Presto 集成开发时,可以使用 SQL 语句进行转换。 例如,要将分转换为元,可以使用如下语句: ``` SELECT amount / 100.0 AS amount_in_yuan FROM transactions; ``` 其中,amount 是分的字段,amount_in_yuan 是转换后的元的字段。 如果想要在程序中进行转换,可以使用 Presto 的 API,连接到 Presto 并执行相应的 SQL 语句。 例如,在 Python 中,可以使用 PyHive 库来连接到 Presto 并执行 SQL 语句。 首先,需要安装 PyHive 库: ``` pip install pyhive ``` 然后,可以使用以下代码连接到 Presto 并执行转换语句: ``` from pyhive import presto # 连接到 Presto conn = presto.connect( host='your-presto-host', port=8080, user='your-username' ) # 执行 SQL 语句 cursor = conn.cursor() cursor.execute('SELECT amount / 100.0 AS amount_in_yuan FROM transactions') # 获取结果 results = cursor.fetchall() for result in results: print(result) # 关闭连接 cursor.close() conn.close() ``` 在其他语言中,可以使用类似的方法连接到 Presto 并执行 SQL 语句。 ### 回答2: 使用大数据Presto集成开发和转换分到元的过程如下: 首先,我们需要安装和配置Presto集成开发环境。可以通过下载Presto安装包,并按照官方文档提供的指导进行安装和配置。安装完成后,需要进行相关的参数配置,例如配置集群节点、端口、数据源、权限等等。 接下来,我们可以使用Presto集成开发工具进行数据的查询、转换和分析。Presto集成开发工具提供了一个交互式的查询界面,用户可以通过SQL语句进行数据查询和分析。可以通过编写SQL语句查询和筛选需要的数据,并进行聚合、计算等操作。在查询结果中,我们可以通过使用Presto内置的函数对数据进行转换,例如将某个字段的单位从分转换成元。 如果需要对大数据进行更复杂的处理和分析,可以使用Presto集成开发工具中的其他功能,例如使用Presto提供的UDF(用户自定义函数)进行数据转换和处理,或者使用Presto的连接器(connector)连接其他数据源进行数据的整合和分析。 在使用Presto集成开发进行数据转换分到元时,可以通过使用如下示例的SQL语句进行转换: SELECT column_name / 100 as column_name_in_yuan FROM table_name 其中,column_name表示需要转换的字段名,table_name表示需要查询的表名。通过将分除以100,可以将分转换成元,并将转换后的结果保存在column_name_in_yuan字段中。 通过上述步骤,我们可以使用大数据Presto集成开发进行数据查询、转换和分析,并将需要转换的字段从分转换成元。这样可以使得数据更易于理解和使用,方便用户进行后续的数据分析和决策。 ### 回答3: 要使用大数据Presto集成开发工具进行数据转换、分析以及计算智能,首先需要完成以下步骤: 1. 安装Presto: 要使用Presto,首先需要在集群中安装Presto引擎。这可以通过使用预先配置好的Presto发行版本或自行构建Presto源代码的方法完成。 2. 创建和配置集群:配置Presto以连接到数据源和执行任务。这通常涉及更新Presto的配置文件,包括定义数据源连接信息以及调整查询计划和优化器。 3. 数据转换:使用Presto SQL或其他工具编写查询语句,在Presto集群上执行数据转换操作。Presto支持标准的SQL查询语法,可用于过滤、转换和聚合数据。 4. 数据分析和计算:使用Presto的分布式计算能力对大数据集进行分析和计算。Presto能够处理包括PB级别的数据在内的大规模数据集,并提供高性能的查询处理和计算能力。 5. 数据输出和可视化:将处理后的数据输出到所需的目标。Presto支持将结果导出到多种格式,包括文本、CSV、JSON等。可以将结果导出到其他工具或将其连接到可视化界面,以便更好地呈现和分析数据。 6. 监控和优化:使用Presto提供的监控和优化工具对查询性能进行监视和调整。Presto提供了一些内置的监控指标和查询计划可视化工具,可以帮助用户识别潜在的性能问题并进行优化。 总之,使用Presto集成开发工具进行数据转换、分析以及计算可以通过安装Presto、配置集群、编写查询语句、执行分析计算、输出结果并监控性能来实现。Presto的强大功能和高性能使其成为处理大数据的理想选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值