当前位置: 首页 > article >正文

Presto如何使用

Presto 是一个分布式 SQL 查询引擎,适用于大规模数据分析。它支持通过标准 SQL 查询多种数据源,包括 HDFS、S3、MySQL、PostgreSQL、Kafka 等。Presto 的设计目标是实现交互式的查询性能,适合在海量数据上进行快速的 SQL 查询。

Presto 的架构

Presto 的架构是分布式的,主要包括以下组件:

  1. Coordinator(协调器):负责接收 SQL 查询、解析查询计划、调度执行并汇总最终结果。
  2. Worker(工作节点):处理具体的查询任务,并将部分结果汇总传递给协调器。
  3. Connector(连接器):用于与不同数据源通信,如 HDFS、S3、关系型数据库等。

Presto 的 Coordinator 和 Worker 节点通过配置相互连接,分工合作以完成查询任务。

使用步骤

1. 安装 Presto

Presto 以 Java 为基础,所以首先确保你有 Java 环境(推荐 JDK 11 或以上)。然后:

  1. 下载 Presto Server:

    • Presto 官方下载链接
  2. 解压 Presto 并设置环境变量 PRESTO_HOME

    export PRESTO_HOME=/path/to/presto
    export PATH=$PATH:$PRESTO_HOME/bin
    
  3. 创建 Presto 的配置文件目录:

    mkdir -p $PRESTO_HOME/etc
    
2. 配置 Presto

配置文件主要分为以下几种:

  • Node 配置 (node.properties):定义每个节点(Coordinator 或 Worker)的角色。
  • JVM 配置 (jvm.config):调整 JVM 参数。
  • Config 配置 (config.properties):定义 Presto 服务的运行方式和网络通信等设置。
  • Catalog 配置 (catalog/):定义不同数据源的连接方式。

1. node.properties 文件(每个节点都要有)

node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/presto/data

2. config.properties 文件(Coordinator 配置)

coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
discovery.uri=http://<coordinator-ip>:8080

3. config.properties 文件(Worker 配置)

coordinator=false
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
discovery.uri=http://<coordinator-ip>:8080

4. JVM 配置 (jvm.config)

-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
3. 配置 Catalog

Catalog 是 Presto 与数据源交互的接口。例如,如果要连接一个 MySQL 数据库,你需要在 catalog/ 目录下创建一个名为 mysql.properties 的文件:

mysql.properties 文件

connector.name=mysql
connection-url=jdbc:mysql://<mysql-ip>:3306
connection-user=root
connection-password=root_password

Presto 支持多种数据源,如 HDFS、S3、Kafka 等,每种数据源都有对应的 Catalog 配置文件。

4. 启动 Presto

在 Coordinator 节点和 Worker 节点上使用以下命令分别启动:

presto --server localhost:8080 --catalog hive --schema default

如果 Coordinator 和 Worker 正常启动,Presto 应该能够通过浏览器访问其 UI,访问地址为 http://<coordinator-ip>:8080.

5. 执行查询

可以通过 Presto CLI 工具连接到 Presto 集群并执行查询。CLI 可以从 Presto 下载页面 获取。

下载 CLI 后,用以下命令连接到 Presto:

./presto --server <coordinator-ip>:8080 --catalog mysql --schema default

执行 SQL 查询:

SELECT * FROM my_table WHERE id = 123;

Presto 支持标准 SQL,因此你可以用 SQL 语法对多种数据源进行查询。

6. 常用命令
  • 查询表结构
DESCRIBE my_table;
  • 列出所有数据库
SHOW SCHEMAS FROM mysql;
  • 列出所有表
SHOW TABLES FROM mysql.default;
  • 创建视图
CREATE VIEW my_view AS
SELECT column1, column2
FROM my_table
WHERE column3 > 100;

Presto 的典型使用场景

  1. 数据湖查询:Presto 能快速查询 HDFS 或 S3 上的海量数据,尤其适用于分析性查询。
  2. 跨源查询:Presto 可以同时查询多个不同的数据源,例如可以用 SQL 在同一个查询中从 MySQL 和 Kafka 中拉取数据。
  3. 实时分析:Presto 通过分布式架构提供快速的交互式查询性能,适合实时数据分析需求。

Presto 是数据分析的强大工具,适合企业在大数据生态中进行多源数据整合和交互式查询。


http://www.kler.cn/news/309961.html

相关文章:

  • CF EDU 169
  • 初写MySQL四张表:(1/4)
  • 【Kubernetes】常见面试题汇总(二十三)
  • Longman Dictionary of Contemporary English (朗文当代高级英语辞典)
  • MySQL高阶1783-大满贯数量
  • 使用python 将world的题库导入某学习软件的模板
  • 【RabbitMQ】工作模式
  • 20240911软考架构-------软考156-160答案解析
  • 【物联网】深入解析时序数据库TDengine及其Java应用实践
  • 力扣最热一百题——合并两个有序链表
  • do { ... } while (0) 的意义
  • 单片机拍照_将采集的RGB图像封装为BMP格式保存到SD卡
  • Pandas_sqlite
  • bestphp‘s revenge1
  • 排序----数据结构
  • 9.18日常记录
  • cmd修改游戏数据处理量大小
  • vue获取最近7天时间;获取任意时间段时间
  • 【前端】main.js中app.vue中 render函数的作用及使用背景
  • 【数据库】MySQL-基础篇-事务
  • 架构设计——概念和基础
  • 在 Android 中,自定义 View 的绘制流程
  • 【原创】java+springboot+mysql校园订餐网系统设计与实现
  • JSON语法
  • go语言后端开发学习(七)——如何在gin框架中集成限流中间件
  • 【VUE】快速上手
  • 企业CAD图纸防泄密措施有哪些?10个真实有效方法分享
  • Science Robotics 在小动物模型中实现渐进和可逆主动脉收缩的软机器人平台
  • 202409011在飞凌的OK3588-C的核心板跑Rockchip原厂的Android12时挂载触摸屏ft5x06之后使用i2c-tools检测
  • 「DAOI R1」Magic