Impala 和 Presto 概述及JDBC

使用Java JDBC访问Presto编程 在实际应用中,你可以根据需要使用更复杂的SQL查询和更多的JDBC功能来满足你的需求。Presto是一个开源的分布式SQL查询引擎,它可以快速查询各种数据源,如关系型数据库、Hadoop、NoSQL数据库等。在Java中,我们使用java.sql包提供的类和接口来连接和操作数据库。需要注意的是,在实际使用中,你需要根据你的Presto数据库的配置和要访问的具体数据库进行相应的参数设置和修改。除了查询操作,我们还可以使用Java JDBC执行插入、更新和删除数据的操作。在上面的示例代码中,我们使用。 阅读详情

目录

  • 一、Impala
    • 1.1 Overview
    • 1.2 数据类型
    • 1.3 其他
    • 1.4 Impala JDBC
      • 1.4.1 Pom
      • 1.4.2 Code
  • 二、Presto
    • 2.1 Overview
    • 2.2 Presto的基本概念
    • 2.3 其他
    • 2.3 Presto JDBC
      • 2.3.1 Pom
      • 2.3.2 Code

一、Impala

Maven项目编写Impala JDBC,使用Scala语言编写代码,如果需要可以自行更改为Java代码。

Impala JDBC 2.0 及更高版本使用的默认端口为 21050,Impala服务器通过此端口接收JDBC连接。确保此端口可用于网络上其他主机通信,例如,防火墙软件是否阻止此端口。如果客户端想使用其他端口连接,请修改Impala 端口号 --hs2_port并重启Impala。

1.1 Overview

Apache Impala是Apache Hadoop的开源原生分析数据库。多数BI工具都支持Impala,Impala为基于Hadoop上的BI提供了低延迟和高并发性分析查询,即使在多租户环境下,Impala也可以线性扩展。

对于Apache Hive用户,Impala使用相同的元数据和ODBC驱动程序。与Hive一样,Impala支持SQL,因此您不必担心重新造轮子。安装完毕后,在 impala-shell中同步元数据到Impala,执行命令: invalidate metadata; 即可开始使用。

Impala可以提高 Apache Hadoop上SQL查询性能,同时保留了熟悉的用户体验。使用Impala,您可以实时查询数据,无论是存储在HDFS还是Apache HBase中 - 包括SELECT,JOIN和聚合函数。

为了避免延迟,Impala绕过MapReduce,而是通过专门的分布式查询引擎直接访问数据,这个引擎非常类似于商业并行RDBMS中的查询引擎,The result is order-of-magnitude faster performance than Hive, depending on the type of query and configuration.
Impala
Impala 的进程主要有如下几个:Impala Daemon、Impala StateStore、Impala Catalog
在这里插入图片描述
Impala Daemon进程是 Impala 的核心组件,在系统中这个进程的名称为impalad,在 Impala 集群的每个节点一般都会部署启动此进程,这个进程主要负责对数据文件的读和写,它接受来自 impala-shell、JDBC、Hue等的查询请求,每一个有Impala Daemon 服务进程的节点都可以接受这些请求,一旦接受了这个请求,那么此时这个节点可以叫做此次任务的中心协调者节点,此次查询的 Impala Daemon 的其它节点的数据最终都会传输到 协调者节点,最后再由协调者节点将最终的结果返回的请求者。因为 Impala 属于 MMP (Massively Parallel Processing)型数据库引擎,在实际中所有的请求最好均匀的负载到每个 Impala D aemon 服务节点。

Impala StateStore进程用于手机各个 Impalad 进程的健康状态和负载,并将健康状态发送到 Impalad 的各个进程,在系统中 Impala StateStore 进程的名称为 statestored,在一个 Impala 集群中 statestored 进程只需要一个即可。当 某个 impalad 进程服务挂了(比如由于硬件问题、软件问题、网络问题导致的不可用),statestored 进程会及时的将信息传达到所有的健康的 impalad 进程服务节点,当后面有新的查询请求时,其他上面 impalad 上面的查询请求任务将不会发送到这个有问题的 impalad 服务节点上。如果 statestored 进程也挂了😂,Impalad 节点仍然可以对外提供分布式查询,只不过如果有 Impalad 再失败了就会让集群不那么的强劲,当 statestored 进程节点恢复后,它将重新与 impalad 建立通信,恢复对集群的监控。

Impala Catalog Server进程在系统中的名字为 catalogd。我们在使用 Impala 查询数据时偶尔会需要手动同步元数据(invalidate metadata),但大多数时候是不需要的,其中的功劳就是这个进程,当在 impala 集群中执行 SQL 语句时(修改、删除、INSER、LOAD DATA等操作),可能会引起数据的变化,catalogd 进程服务就会负责将这些变化及时的推送到其它所有的 impalad 节点上,这样 impalad 就会及时的了解的集群的数据的变化,这样就减少了 REFRESH 和 INVALIDATE METADATA命令的执行。在一个 impala 集群中也是只需要一个 catalogd 就可以的,因为这个信息会通过 statestored 发送,所以最好的方式就是将 catalogd 和 statestored 部署在一个节点。

1.2 数据类型

类型条件范围描述句法
ARRAY复杂类型仅适用于2.3或更高版本。文件类型只能为Parquet或ORC格式可以表示任意数量的有序元素的复杂数据类型,元素可以是标量或者另一个复杂类型column_name ARRAY < type >
BIGINT-9223372036854775808 至9223372036854775807。没有UNSIGNED子类型。8字节整数数据类型column_name BIGINT
BOOLEANTRUE或FALSE表示单个true / false选择column_name BOOLEAN
CHAR仅适用于2.0或更高版本。对于Impala,长度是必需的。CHAR和VARCHAR列中的 所有数据必须使用与UTF-8兼容的字符编码。最大长度为255固定长度的字符类型,必要时尾部用空格填充以达到指定的长度。如果值长于指定的长度,则Impala会截断所有尾部字符。column_name CHAR(length)
DATEDATE类型在Impala 3.3及更高版本中可用0000-01-01至9999-12-31使用DATE数据类型存储日期值
DECIMAL仅适用于3.0或更高版本。3.x版本与2.版本有区别,如果继续使用老版本,可设置SET DECIMAL_V2=FALSE。-10 ^ 38 +1到10 ^ 38 –1固定尺和精度的数值数据类型DECIMAL[(precision[, scale])]
DOUBLE4.94065645841246544e-324 至 1.79769313486231570e+308 正数或负数双精度浮点数据类型column_name DOUBLE
FLOAT1.40129846432481707e-45至3.40282346638528860e+38 正数或负数单精度浮点数据类型column_name FLOAT
INT如果整数值太大而无法用INT 表示,请改用 BIGINT-2147483648 至 2147483647使用的4字节整数数据类型column_name INT
MAP复杂类型仅适用于2.3或更高版本。在后台,该MAP类型的实现方式与该ARRAY类型类似 。Impala不会对KEY值施加任何唯一性约束表示任意一组键值对的复杂数据类型,key部分是一个标量类型,value部分可以是标量或另一复杂类型column_name MAP < primitive_type, type >
REALDOUBLE数据类型 的别名column_name REAL
SMALLINT如果整数值太大而不能用SMALLINT表示,请改用 INT。-32768 至 32767 ,没有UNSIGNED子类型使用的2字节整数数据类型column_name SMALLINT
STRING在32 KB或更少的字符串上运行的查询将可靠地工作,并且不会造成严重的性能或内存问题对STRING的大小和一行总大小的硬性限制是2 GB;STRING写入Parquet文件时 限制为1 GB。字符串column_name STRING
STRUCT复杂类型仅适用于2.3或更高版本。只能在具有Parquet或ORC文件格式的表或分区中使用。具有此数据类型的列不能用作分区表中的分区键列。任何复杂类型(包括任何嵌套类型的声明)的列定义的最大长度为4000个字符。代表单个项目的多个字段。经常用作ARRAY 或MAP的VALUE部分的元素类型column_name STRUCT < name : type [COMMENT 'comment_string'], ... >
TIMESTAMP1400-01-01至9999-12-31TIMESTAMP数据类型保存日期和时间的值。可以将其分解为年,月,日,小时,分钟和秒字段,但是由于没有可用的时区信息,因此它不对应于任何特定的时间点。更多关于日期函数请查看 Time Functionscolumn_name TIMESTAMP
TINYINT如果整数值太大而无法用TINYINT表示,请改用SMALLINT-128 至127。没有UNSIGNED子类型使用的1字节整数数据类型column_name TINYINT
VARCHAR仅适用于2.0或更高版本您可以指定的最大长度为65535。可变长度字符类型,在处理过程中必要时将其截断以适合指定的长度。column_name VARCHAR(max_length)
复杂类型仅适用于2.3或更高版本复杂类型(也称为嵌套类型)使您可以在单个行/列位置中表示多个数据值

1.3 其他

1.4 Impala JDBC

1.4.1 Pom

只列出重要部分

<!-- *** Scala *** -->
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>2.11.8</version>
        </dependency>
        <!-- scala-compiler -->
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-compiler</artifactId>
            <version>2.11.8</version>
        </dependency>
        <!-- scala-reflect -->
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-reflect</artifactId>
            <version>2.11.8</version>
        </dependency>

		<!-- https://mvnrepository.com/artifact/com.cloudera.impala/jdbc -->
        <dependency>
            <groupId>com.cloudera.impala</groupId>
            <artifactId>jdbc</artifactId>
            <version>2.5.31</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.hive/hive-service -->
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-service</artifactId>
            <version>1.1.1</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.hive</groupId>
                    <artifactId>hive-exec</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.thrift/libthrift -->
        <dependency>
            <groupId>org.apache.thrift</groupId>
            <artifactId>libthrift</artifactId>
            <version>0.12.0</version>
        </dependency>

1.4.2 Code

package yore

import java.sql.{Connection, DriverManager, PreparedStatement, ResultSet}

/**
  * Impala JDBC
  *
  * Created by yore on 2019/5/20 06:46
  */
object ImpalaJDBCClient {

  private[yore] val JDBC_DRIVER: String = "com.cloudera.impala.jdbc41.Driver"
  // 端口可以查看:Impala 配置项 hs2_port
  private[yore] val URL = "jdbc:impala://cdh3:21050/kudu_test"

  def main(args: Array[String]): Unit = {
    var conn: Connection = null
    var ps: PreparedStatement = null

    try{
      Class.forName(JDBC_DRIVER)
      conn = DriverManager.getConnection(URL)

      var sql = "show tables"
      sql = "select * from tag_5 limit 10"

      ps = conn.prepareStatement(sql)
      val result: ResultSet = ps.executeQuery()

      val start = System.currentTimeMillis()
      while (result.next()){
        for(pos <- 1 to result.getMetaData.getColumnCount){
          print(result.getObject(pos) + "\t")
        }
        println()
      }
      val end = System.currentTimeMillis()
      println("-"*26 + s" Impala\n\t共花费:${(end - start).toDouble/1000} 秒")
    }catch {
      case e: Exception => e.printStackTrace()
    }finally {
      if(ps != null) ps.close()
      if(conn != null) conn.close()
      println("-"*26)
    }
  }
}

二、Presto

2.1 Overview

Presto 是一个在 Facebook 主持下运营的开源项目。Presto是一种旨在使用分布式查询有效查询大量数据的工具,Presto是专门为大数据实时查询计算呢而设计和开发的产品,其为基于 Java 开发的,对使用者和开发者而言易于学习。
Presto有时被社区的许多成员称为数据库,官方也强调 Presto 不是通用关系数据库,它不是 MySQL,PostgreSQL 或 Oracle 等数据库的替代品,Presto 不是为处理在线事务处理(OLTP)而设计的。

如果您使用太字节或数PB的数据,您可能会使用与 Hadoop 和 HDFS 交互的工具。Presto 被设计为使用 MapReduce 作业(如Hive或Pig)管道查询 HDFS 的工具的替代方案,但 Presto不限于访问HDFS。
Presto 可以并且已经扩展到可以在不同类型的数据源上运行,包括传统的关系数据库和其他数据源像 Cassandra。Presto旨在处理数据仓库和分析:数据分析,聚合大量数据和生成报告。这些工作负载通常归类为在线分析处理(OLAP)。

2.2 Presto的基本概念

  1. Coordinator
    Presto coordinator 是负责解析语句、查询计划和管理 Presto Worker 节点的服务器。它是 Presto 安装的“大脑”,也是客户端连接以提交语句以供执行的节点。
    每个 Presto 安装必须有一个 Presto Coordinator 和一个或多个 Presto Worker。出于开发或测试目的,可以将单个 Presto 实例配置作为这两个角色。
    协调器跟踪每个 Worker 的活动并协调查询的执行。Coordinator 创建一个涉及一系列阶段的查询的逻辑模型,然后将其转换为在 Presto 工作集群上运行的一系列连接任务。
    Coordinator 使用 REST API 与 Worker 和客户进行通信。

  2. Worker
    Presto worker 是 Presto 安装中的负责执行任务和处理数据服务器。Worker 从连接器获取数据并相互交换中间数据。Coordinator 负责从工人那里获取结果并将最终结果返回给客户。
    当Presto工作进程启动时,它会将自己通告给 Coordinator 中的发现服务器,这使 Presto Coordinator可以执行任务。
    Worker 使用 REST API 与其他 Worker 和 Presto Coordinator 进行通信。

  3. Connector
    Connector 将 Presto 适配到数据源,如Hive或关系数据库。您可以将 Connector 视为与数据库驱动程序相同的方式。它是 Presto SPI 的一个实现,它允许 Presto 使用标准 API 与资源进行交互。
    Presto 包含几个内置连接器:一个用于 JMX 的连接器 ,一个提供对内置系统表的访问的系统连接器,一个Hive连接器和一个用于提供 TPC-H 基准数据的TPCH连接器。
    许多第三方开发人员都提供了连接器,以便 Presto 可以访问各种数据源中的数据。每个 Catalog 都与特定 Connector 相关联。如果检查 Catalog 配置文件,您将看到每个都包含强制属性 connector.name,
    Catalog 使用该属性为给定 catalog 创建 Connector。可以让多个 Catalog 使用相同的 Connector 来访问类似数据库的两个不同实例。例如,如果您有两个Hive集群,则可以在单个 Presto 集群中配置两个 Catalog,
    这两个 Catalog 都使用 Hive Connector,允许您查询来自两个 Hive 集群的数据(即使在同一SQL查询中)。

  4. Catalog
    Presto Catalog 包含 Schemas,并通过 Connector 引用数据源。例如,您可以配置 JMX catalog 以通过 JMX Connector 提供对 JMX 信息的访问。
    在 Presto 中运行 SQL 语句时,您将针对一个或多个 Catalog 运行它。Catalog 的其他示例包括用于连接到 Hive 数据源的 Hive 目录。
    当在 Presto 中寻址一个表时,全限定的表名始终以 Catalog 为根。例如,一个全限定的表名称hive.test_data.test 将引用 Hive catalog中 test_data库中 test表。
    Catalog 在存储在 Presto 配置目录中的属性文件中定义。

  5. Schema
    Schema 是组织表的一种方式。Schema 和 Catalog 一起定义了一组可以查询的表。使用 Presto 访问 Hive 或 MySQL 等关系数据库时,Schema 会转换为目标数据库中的相同概念。
    其他类型的 Connector 可以选择以对底层数据源有意义的方式将表组织成 Schema。

  6. Table
    表是一组无序行,它们被组织成具有类型的命名列。这与任何关系数据库中的相同。从源数据到表的映射由 Connector 定义。

  7. Statement
    Presto 执行与 ANSI 兼容的 SQL 语句。当 Presto 文档引用语句时,它指的是 ANSI SQL 标准中定义的语句,它由子句(Clauses),表达式(Expression)和断言(Predicate)组成。
    Presto 为什么将语句(Statment)和查询(Query)概念分开呢?这是必要的,因为在 Presto 中,Statment 只是引用 SQL 语句的文本表示。执行语句时,Presto 会创建一个查询以及一个查询计划,然后该查询计划将分布在​​一系列 Presto Worker 进程中。

  8. Query
    当 Presto 解析语句时,它会将其转换为查询并创建分布式查询计划,然后将其实现为在 Presto Worker 进程上运行的一系列互连阶段。在 Presto 中检索有关查询的信息时,您会收到生成结果集以响应语句所涉及的每个组件的快照。
    语句和查询之间的区别很简单。语句可以被认为是传递给 Presto 的 SQL 文本,而查询是指为实现该语句而实例化的配置和组件。查询包含 stages, tasks, splits, connectors以及协同工作以生成结果的其他组件和数据源。

  9. Stage
    当 Presto 执行查询时,它会通过将执行分解为具有层级关系的多个 Stage。例如,如果 Presto 需要聚合存储在 Hive 中的10亿行的数据,则可以通过创建根 State 来聚合其他几个阶段的输出,所有这些阶段都旨在实现分布式查询计划的不同部分。
    包含查询的层级关系结构类似于树。每个查询都有一个根 Stage,负责聚合其他 Stage 的输出。阶段是 Coordinator 用于建模分布式查询计划的 Stage,但阶段本身不在 Presto Worker 进程上运行。

  10. Task
    如上一部分所述,Stage 为分布式查询计划的特定部分建模,但 Stage 本身不在 Presto Worker 进程上执行。要了解 Stage 的执行方式,您需要了解 Stage 是通过 Presto Worker 网络分发的一系列任务来实现的。
    任务是 Presto 架构中的“work horse”,因为分布式查询计划被解构为一系列 Stage,然后将这些 Stage 转换为任务,然后执行或处理 split。Presto 任务具有输入和输出,正如一个 Stage 可以通过一系列任务并行执行,任务与一系列驱动程序并行执行。

  11. Split
    任务对拆分进行操作,拆分是较大数据集的一部分。分布式查询计划的最低级别的 Stage 通过 Connector 的拆分检索数据,而分布式查询计划的更高级别的中间阶段从其他阶段检索数据。
    当 Presto 正在安排查询时,Coordinator 将查询 Connector 以获取可用于表的所有拆分的列表。Coordinator 跟踪哪些计算机正在运行哪些任务以及哪些任务正在处理哪些拆分。

  12. Driver
    任务包含一个或多个并行 Driver。Driver 对数据进行操作并组合运算符以生成输出,然后由任务聚合,然后将其传递到另一个 Stage 中的另一个任务。
    Driver 是一系列操作符实例,或者您可以将 Driver 视为内存中的一组物理运算符。它是 Presto 架构中最低级别的并行性。Driver 有一个输入和一个输出。

  13. Operator
    Operator消费、转换和生成数据。例如,表扫描从 Connector 获取数据并生成可由其他运算符使用的数据,并且过滤器运算符通过在输入数据上应用来使用 Predicate 数据并生成子集。

  14. Exchange
    交换在 Presto 节点之间传输数据以用于查询的不同阶段。任务使用交换客户端将数据生成到输出缓冲区并使用其他任务中的数据。

2.3 其他

2.4 Presto JDBC

如果查看

2.4.1 Pom

    <dependencies>
        <!-- https://mvnrepository.com/artifact/io.prestosql/presto-jdbc -->
        <dependency>
            <groupId>io.prestosql</groupId>
            <artifactId>presto-jdbc</artifactId>
            <version>314</version>
        </dependency>
    </dependencies>

2.4.2 Code

package yore;

import io.prestosql.jdbc.PrestoConnection;

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.ZoneId;
import java.util.Properties;
import java.util.TimeZone;

/**
 * JDBC访问 Presto
 * @see <a href="https://prestodb.github.io/docs/current/installation/jdbc.html">JDBC Driver<a/><br/>
 *
 * Created by yore on 2019/5/8 13:10
 */
public class PrestoJDBCClient {

    static final String JDBC_DRIVER  = "io.prestosql.jdbc.PrestoDriver";
    static final String URL = "jdbc:presto://cdh6:8080/kudu/default";

    public static void main(String[] args) {
        // @see <a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones">List of tz database time zones</a>
        // 设置时区,这里必须要设置  map.put("CTT", "Asia/Shanghai");
        TimeZone.setDefault(TimeZone.getTimeZone(ZoneId.SHORT_IDS.get("CTT")));

        Properties properties = new Properties();
        properties.setProperty("user", "presto-user");
        properties.setProperty("SSL", "false");

        PrestoConnection conn = null;
        PreparedStatement ps = null;

        try {
            Class.forName(JDBC_DRIVER);
            conn = (PrestoConnection)DriverManager.getConnection(URL, properties);

            String sql = "show tables";
            sql = "select * from tag_5 limit 10";

            ps = conn.prepareStatement(sql);
            ResultSet result = ps.executeQuery();

            long start = System.currentTimeMillis();
            while (result.next()){
                for(int pos=1; pos< result.getMetaData().getColumnCount(); pos++){
                    System.out.print(result.getObject(pos) + "\t");
                }
                System.out.println();
            }

            long end = System.currentTimeMillis();
            System.out.println("--------------------------Presto" );
            System.out.println("\\t共花费:" + (double) (end - start) /1000 + "秒");
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(ps != null) {
                try {
                    ps.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("--------------------------" );
        }
    }
}



最后我的笔记

其他关于Presot的可以查看 我的另一篇博客

End

大数据Presto(五):Presto优化与Impala对比 使用Join语句时将大表放在左边Presto中join的默认算法是broadcast join,即将join左边的表分割到多个worker,然后将join右边的表数据整个复制一份发送到每个worker进行计算。Presto对ORC文件读取做了特定优化,因此在Hive中创建Presto使用的表时,建议采用ORC格式存储。合理设置分区在读取数据时可以针对分区数据读取,可以减少Presto数据读取量,提升查询性能。由于采用列式存储,查询时指定字段进行查询分析,减少读取数据量,避免使用“*”查询。 阅读详情

相关推荐

大数据Presto(四):Presto自定义函数和JDBC连接

Presto 自定义函数我们可以登录Presto客户端,使用命令:show functions 来查询对应的内置函数。我们也可以自己定义函数,自定义的函数包含UDF和UDAF函数。1、​​​​​​​​​​​​​​UDF函数自定义UDF函数及使用可以按照下面步骤来实现。1.1、创建Maven项目,加入如下依赖

Lansonli(蓝深李)的博客 1850

(44)Presto 命令行 Client 安装

1.命令行 Client 安装 1)下载 Presto 的客户端 https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.196/presto-cli-0.196- executable.jar 2)将 presto-cli-0.196-executable.jar 上传到 hadoop102 的/opt/module/presto 文件夹下 3)修改文件名称 [atguigu@hadoop102 presto]$

song_quan_的博客 963

华为P30/pro (ELE-AL00) 鸿蒙4.2降级 EMUI 9

分享

m0_52356707的博客 1万+

Presto JDBC连接官方指南与坑点记录

1、添加依赖 <dependency> <groupId>io.prestosql</groupId> <artifactId>presto-jdbc</artifactId> <version>312</version> </dependency> Driver为io.pre...

Deegue 1万+

用Multisim仿真一个9V供电的双工对讲机:从电桥原理到LM1875功放调试全记录

本文详细介绍了使用Multisim仿真9V供电的双工对讲机全过程,涵盖电桥原理、NE5532前置放大设计、LM1875功放调试及双工通信实现。通过实战案例解析,帮助读者掌握模拟电路设计与调试技巧,提升电子工程实践能力。

weixin_28678831的博客 115

433M无线遥控器EV1527协议解码实战:从逻辑分析到代码优化

本文详细解析了433M无线遥控器EV1527协议的实战解码过程。从使用逻辑分析仪抓取波形、理解同步头与数据位编码原理开始,逐步深入代码实现。文章重点对比了原始定时器轮询法的痛点,并提出了基于“边沿捕获+时间戳”的优化方案,构建了高效、可移植且具备抗干扰能力的解码引擎,最后分享了跨平台移植的核心技巧。

weixin_29168813的博客 927

如何比较Hive,Spark,Impala和Presto?

Spark,Hive,Impala和Presto是基于SQL的引擎,Impala由Cloudera开发和交付。在选择这些数据库来管理数据库时,许多Hadoop用户会感到困惑。Presto是一个开放源代码的分布式SQL查询引擎,旨在运行甚至PB级的SQL查询,它是由Facebook人设计的。 Spark SQL是一个分布式内存计算引擎,它的内存处理能力很高。Hive也由Apache作为查询引擎引入,这使数据库工程师的工作更加轻松,他们可以轻松地在结构化数据上编写ETL作业。在发布Spark之前,Hiv...

u011250186的博客 3707

slam_toolbox 简介和使用

专为移动机器人在未知环境中实时构建地图和定位设计。它适用于2D和3D环境,支持多种机器人平台和传感器配置。

weixin_74808846的博客 3306

presto搭建以及和impala,sparksql对比

presto : coordinator + woker Coordinator: 1.用来解析语句,执行计划分析和管理Presto的worker结点。 Presto安装必须有一个Coordinator和多个worker。 如果用于开发环境和测试,则一个Presto实例可以同时担任这两个角色。 2.Coordinator跟踪每个work的活动情况并协调查询语句的执行。 Coordinator为...

webpetter的博客 1798

《UDS协议从入门到精通》系列——到底什么是DTC?

到底什么是DTC?看这里,深度图解DTC格式,详述DTC状态位、快照信息和扩展信息!!

车载系统攻城狮 1万+

YOLOv11架构革新:华为VanillaNet与BiFPN深度融合的突破性改进实战指南

购买即可解锁300+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,别人有的本专栏也有!

LXY_LOVE36的博客 136

OLAP(二):Presto 、和impala性能测试

Presto 是一个开源的分布式 SQL 查询引擎,数据量支持 GB 到 PB 字节,主要用来处理秒级查询的场景。注意:虽然 Presto 可以解析 SQL,但它不是一个标准的数据库。不是MySQL、Oracle的代替品,也不能用来处理在线事务(OLTP)。

. 3225

2024 年 9 月青少年软编等考 C 语言三级真题解析

2024 年 9 月青少年软编等考 C 语言三级真题解析。

发布少儿编程考级的真题和优秀竞赛题解析,以及一些讲义。 1739

greenplum presto impala选型与测评

数仓框架: 商业系统 InfoBright Greenplum(已开源)、HP Vertica、TeraData、Palo、ExaData、RedShift、BigQuery(Dremel) 开源实现 Impala、Presto、Spark SQL、Drill、Hawq Druid、Pinot Kyl...

yimenglin的博客 4105

【反蒸馏实战 00】AI抢不走的工作:一份针对30个“高危”职位的“反取代”实战手册(反蒸馏计划启动)

AI时代职场生存指南:30个技术岗位的“反蒸馏”实战策略 随着AI技术快速发展,职场正面临前所未有的结构性重构。本系列专栏聚焦30个技术岗位,深入分析AI对各职位的影响路径,并提供系统性的"反蒸馏"策略。通过5层分析框架(AI冲击现状、核心价值解构、AI天花板、能力升级路径、人机协作模式),帮助从业者识别可替代任务与核心价值,建立不可替代的专业优势。内容涵盖IT开发、数据分析、产品管理等技术领域,为职场人提供从“被AI替代”到“与AI协同”的转型路线图,守护职业价值。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1650

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

查询引擎:Presto VS Impala

Presto vs Impala 深度对比摘要 两大分布式SQL引擎在架构上存在根本差异:Presto采用解耦的Connector模式支持多数据源,纯内存计算;Impala深度集成Hadoop,通过LLVM编译优化。性能测试显示Impala在简单查询(快25-38%)和高并发(+58%吞吐量)占优,而Presto擅长高基数聚合。企业级功能上,Presto支持更丰富的数据源和跨库查询,Impala则在物化视图和容错上更强。生产部署时,Presto需重点调优内存参数(防OOM),Impala需结合HDFS优化本

csdn_tom_168的博客 1291

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

是选impala还是presto_Kylin、druid、presto、impala四种即席查询对比

一、什么是即席查询即席查询是用户根据自己的需求,灵活的选择查询条件,系统根据用户的选择生成相应的统计报表。普通查应用查询是定制开发的,即席查询是用户自定义查询条件理解:快速的执行自定义SQL(可能无法提前运算和预测)重点关注:数据存储格式和架构理解了什么是即席查询之后,下面会从定义、框架原理、优化等几个方面介绍这四个框架、最后会做一个对比,面对不同的业务选择合适的框架二、Kylin1、定义:Apa...

weixin_35130354的博客 1385

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【计算引擎】OLAP之争:kylin、impala、druid、presto、clickhouse

文章目录1. 即席查询2. Kylin2.1 架构2.2 原理2.3 Cube构建优化3. Impala3.1 架构3.2 优化4. Druid4.1 架构4.2 数据结构4.2.1 DataSource4.2.2 Segment结构5. Presto5.1 架构5.2 数据源6. ClickHouse6.1 特性6.2 架构7.总结 1. 即席查询 即席查询是用户根据自己的要求,灵活的选择查询条件,系统根据用户的选择生成相应的统计报表,快速的执行自定义SQL。 2. Kylin Apache kylin

孟知之的搬砖填坑历险记 4067

比较Hive,Spark,Impala和Presto (转载)简单了解它们都是干什么的而已(转载)

原文地址:如何比较Hive,Spark,Impala和Presto? - 知乎 原文的翻译多少有点瑕疵 Spark,Hive,Impala和Presto是基于SQL的引擎,Impala由Cloudera开发和交付。在选择这些数据库来管理数据库时,许多Hadoop用户会感到困惑。Presto是一个开放源代码的分布式SQL查询引擎,旨在运行甚至PB级的SQL查询,它是由Facebook人设计的。 Spark SQL是一个分布式内存计算引擎,它的内存处理能力很高。Hive也由Apache作为查询引擎...

zy103118的博客 2065

Presto详解

Presto是由Facebook2012年开发,基于内存、支持并行计算的分布式SQL交互式查询引擎,不是数据库,支持多种数据源,针对GB~PB数据查询可以达到秒级返回结果,主要用于秒级查询OLAP数据分析场景。目前该项目在Facebook中运行超过30000个查询,每日处理数据PB以上。Presto的查询速度是Hive的10倍以上。一、Presto 自定义函数我们可以登录Presto客户端,使用命令:show functions 来查询对应的内置函数。

weixin_59295776的博客 2679

Hive vs. Impala/Presto/Trino:SQL on Hadoop的另一选择深度解析

2025年发布的Hive 4.0版本进一步优化了执行引擎,显著提升了与云存储(如AWS S3、Azure Data Lake Storage)的集成能力,支持直接查询云上数据而无需数据迁移,同时通过增强的LLAP(Live Long and Process)特性实现更高效的内存计算。接下来的章节将逐步解析Hive的架构与局限,介绍实时查询引擎Impala,探讨Presto和Trino的创新设计,并通过实战案例和未来展望,为读者提供实用的参考和洞察。云原生架构的普及正在重新定义这些工具的部署和运行方式。

zuiyuelong的博客 1137

ROLAP场景下的交互式计算引擎Impala和Presto

应用于ROLAP场景下的交互式计算引擎Impala和Presto 具有以下特点: 1、跟Hadoop生态系统完好结合,可与Hive Metastore对接,处理hive中的表,可直接处理存储在HDFS和Hbase中的数据。 2、计算与存储分析:仅仅是查询引擎,不提供数据存储服务。 3、MPP架构,采用经典的MPP架构,具有良好的扩展性,能够应对TB甚至PB级数据交互式查询需求; 4、嵌套...

chechelove886的专栏 1246

Kylin、druid、presto、impala四种即席查询对比--(转载)

一、什么是即席查询 即席查询是用户根据自己的需求,灵活的选择查询条件,系统根据用户的选择生成相应的统计报表。普通查应用查询是定制开发的,即席查询是用户自定义查询条件 理解:快速的执行自定义SQL(可能无法提前运算和预测) 重点关注:数据存储格式和架构 理解了什么是即席查询之后,下面会从定义、框架原理、优化等几个方面介绍这四个框架、最后会做一个对比,面对不同的业务选择合适的框架 二、Kylin (over) 1、定义:Apache kylin是一个开源分布式分析引擎、提供Hadoop、Spark之

奔跑入坑大数据 2973

impala查询语句_Kylin、druid、presto、impala四种即席查询对比

一、什么是即席查询 即席查询是用户根据自己的需求,灵活的选择查询条件,系统根据用户的选择生成相应的统计报表。普通查应用查询是定制开发的,即席查询是用户自定义查询条件理解:快速的执行自定义SQL(可能无法提前运算和预测)重点关注:数据存储格式和架构理解了什么是即席查询之后,下面会从定义、框架原理、优化等几个方面介绍这四个框架、最后会做一个对比,面对不同的业务选择合适的框架二、Ky...

weixin_39991531的博客 1020

Presto技术实践V1.0

PRESTO技术实践

super_chenzhou 390

python使用spark sql查询impala_如何比较Hive,Spark,Impala和Presto?

Spark,Hive,Impala和Presto是基于SQL的引擎,Impala由Cloudera开发和交付。在选择这些数据库来管理数据库时,许多Hadoop用户会感到困惑。Presto是一个开放源代码的分布式SQL查询引擎,旨在运行甚至PB级的SQL查询,它是由Facebook人设计的。Spark SQL是一个分布式内存计算引擎,它的内存处理能力很高。Hive也由Apache作为查询引擎引入,这...

weixin_39783360的博客 304
上一篇: CDH 6.2.0 或 6.3.0 安装实战及官方文档资料链接
下一篇: Flink Streaming (DataStream API) Operators - Windows
Yore Yuen
博客等级 码龄9年 8647粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yore Yuen

你的支持认可是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值