一、 使用场景

1. 批处理; 2.统计分析;3. 图计算和图检索;4.交互式统计分析

二、Inceptor架构

  • InceptorServer

其中,connector是对BI/ETL工具提供标准JDBC\ODBC接口;

SQL Compiler是语法解析器、优化器、代码生成;

PL/SQL Compiler是存储过程解析器、控制流优化器、并行优化器;

Transaction Manager是分布式增删改、事务并发控制器;

Spark---更高计算效率、大数据量下的高稳定;

整体以Executor(一组用于分布式计算的计算资源)形式存在,可在界面上进行配置。

  • Metastore

存储Inceptor元数据,后台数据存储在TxSQL(MySQL集群),

主要元数据包括 数据库信息、表信息以及字段属性、分区分桶信息。

三、Inceptor SQL

$ beeline -u "jdbc:hive2://<server_ip/hostname>:10000/default" -n <username> -p <password>

四、数据类型(大体的,不是指Inceptor中的数据类型)

  • 基本数据类型

TINYINT(1字节)、SMALLINT(2字节)、INT(4字节)、BIGINT(8字节)

FLOAT、DOUBLE、DECIMAL(不可变的、任意精度的,有符号的十进制数)、BOOLEAN、

STRING、VARCHAR(可变长度字符)、

DATA(日期)、TIMESTAMP(表示日期和时间)、INTERVAL DAY/MONTH/YEAR(用于存储一段以年,月火日为单位的时间)

  • 复杂数据类型

ARRAY、 MAP(无序键值对,键类型必须是原生数据类型,值的类型可以是原生或者复杂)、STRUCT(一组命名的字段)

五、Inceptor中的数据类型

所有的CHAR\NCHAR\VARCHAR\NVACHAR 在Inceptor中都是 STRING 类型;

Numeric、decimal对应decimal(a,b),参数a是共几位有效数,b是小数点后有几位。

六、一些常见命令

创建新数据库

>CREATE DATABASE test_db;

查看数据库信息

> DESCRIBE DATABASE test_db;

要查看指定数据库下所有的表

> SHOW TABLES;

表的分区:PARTITIONED BY子句   (PARTITIONED 分段的意思)

表的分桶:CLUSTERED BY子句     (CLUSTERED 群集的; 成群的)

基础建表语句

> CREATE TABLE table_name (col1 col_type1, col2 col_type2, ...);

创建一个表存放一次查询的结果

> CREATE TABLE table_name AS SELECT select_statement;

重命名

> ALTER TABLE table_name RENAME TO new_table_name;

改动表的注释

> ALTER TABLE table_name SET TBLPROPERTIES ('comment' = new_comment);

Inceptor支持对表的单值分区和范围分区

在逻辑上,将表中的数据按分区放在表目录下的对应子目录中,一个分区对应一个子目录

在物理上,分区表和未分区表没有区别

添加分区

> ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION 'location1'];

注意,该目录必须是HDFS目录,不可以是文件。

添加range partition

> ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION VALUES LESS THAN (values)

删除分区

> ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec; 动态分区: ALTER TABLE table name DROP PARTITION partition_name;

分桶是通过改变数据的存储分布让某些任务(比如取样,join等)运行得更快,对查询起到一定的优化作用,表的分桶在建表时完成,不允许修改。

CREATE TABLE table_name (col_name data_type, col_name data_type, ...)
CLUSTERED BY (col_name,)
[SORTED BY (col_name, col_name,...)[ASC|DESC]]
INTO n BUCKETSINTO n BUCKETS指定桶的数量
SORTED BY根据指定的键排序。ASC表示升序,DESC表示降序。默认顺序是升序。
和分区键不同,分桶键必须是表中的列。

向分桶表写入数据只能通过INSERT,而不能LOAD。

正确的给分桶表写入数据
set hive.enforce.bucketing = true;INSERT OVERWRITE TABLE table_name SELECT * FROM table_name;

导入数据:LOAD

插入数据:INSERT

数据导入要预处理,看编码格式和以什么为换行符

file$filename

需要转码:

iconv -f gbk -t utf-8 $sourceFile > $targetFile
iconv是转码工具,-f源编码格式,-t目标编码格式。转码后再上传。

WHERE和HAVING

WHERE子句和HAVING子句的区别在于,一次查询中如果有WHERE子句,Inceptor会先执行WHERE子句的过滤条件再执行SELECT语句,而查询中如果用到了HAVING子句,Inceptor会先执行SELECT语句,再执行HAVING子句。

换句话说,WHERE在SELECT之前过滤,而HAVING在SELECT之后过滤。

HAVING语句在GROUPBY语句之后;SQL会在分组之后计算HAVING语句。

HAVING后可跟聚合函数,WHERE后不能有聚合函数。

PL/SQL

是一种具有流程控制的数据库程序设计语言。

PL/SQL块由四个基本部分组成:声明、执行体开始、异常处理、执行体结束

DECLARE  --声明(可选部分)
transid STRING
BEGIN  --执行体开始(必要部分)
SELECT trans_id into transid from transactions where acc_num=6513065
DBMS_OUTPUT.put_line(transid)
EXCEPTION  --异常处理(可选部分)
WHEN too_many_rows
THEN
DBMS_OUTPUT.put_line ('too many rows')
END;  --执行体结束(必要部分)

存储过程

创建存储过程
CREATE OR REPLACE PROCEDURE hello_world()
IS
DECLARE
l_message STRING := 'Hello World!'
BEGIN
DBMS_OUTPUT.put_line (l_message)
END;调用存储过程
BEGIN
hello_world()
END;

持续更新!

分布式SQL引擎-----------Inceptor(学习使用)相关推荐

  1. 2021年大数据Spark(三十三):SparkSQL分布式SQL引擎

    目录 分布式SQL引擎 Hive的SQL交互方式 ThriftServer JDBC/ODBC Server 开启sparksql的thriftserver 使用beeline 客户端连接 JDBC/ ...

  2. DRDS分布式SQL引擎—执行计划介绍

    摘要: 本文着重介绍 DRDS 执行计划中各个操作符的含义,以便用户通过查询计划了解 SQL 执行流程,从而有针对性的调优 SQL. DRDS分布式SQL引擎 - 执行计划介绍 前言 数据库系统中,执 ...

  3. java 分布式sql引擎_分布式SQL查询引擎 Presto 性能调优的五大技巧

    概述 Presto架构 Presto是一个分布式的查询引擎,本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询. Presto的架构分为: Coodinator:解析SQL语句,生成 ...

  4. 重磅开源 KSQL:用于 Apache Kafka 的流数据 SQL 引擎 2017.8.29

    Kafka 的作者 Neha Narkhede 在 Confluent 上发表了一篇博文,介绍了Kafka 新引入的KSQL 引擎--一个基于流的SQL.推出KSQL 是为了降低流式处理的门槛,为处理 ...

  5. Apache Kafka的流式SQL引擎——KSQL

    1. KSQL 介绍 KSQL 引擎--一个基于流的 SQL.推出 KSQL 是为了降低流式处理的门槛,为处理 Kafka 数据提供简单而完整的可交互式 SQL 接口.KSQL 目前可以支持多种流式操 ...

  6. 数据仓库(六)---分布式SQL查询引擎---presto介绍

    我们在之前的文章中已经学习了数据仓库hive,如果要对数据仓库进行交互查询,则需要交互查询的引擎用于提高查询效率.本章介绍presto. 简介 Presto是一个开源的分布式SQL查询引擎,适用于实时 ...

  7. 2020-12-03《Presto分布式SQL查询引擎——kkb笔记复习》

    Presto分布式SQL查询引擎 一.课前准备 jdk版本要求:Java 8 Update 151 or higher (8u151+), 64-bit 安装好hadoop集群 安装好hive 二.课 ...

  8. 深入解析分布式数据库的 SQL 引擎优化

    导读 KaiwuDB 的 SQL 引擎包含连接.编译.缓存.分布式日志和分布式执行五大服务组件,实现了多集群多节点协同的高效计算,大大提升了用户的查询效率. 为了进一步提升 SQL 引擎的性能,研发团 ...

  9. Presto 分布式SQL查询引擎

    文章目录 Presto的介绍 Presto的数据模型 通过Presto客户端查询Presto命令 Presto的架构 Java程序访问Presto Presto注意点 Presto的介绍 Presto ...

  10. 消息中间件学习总结(7)——RocketMQ之万亿级数据洪峰下的分布式消息引擎

    前言 通过简单回顾阿里中间件(Aliware)消息引擎的发展史,本文开篇于双11消息引擎面临的低延迟挑战,通过经典的应用场景阐述可能会面临的问题 - 响应慢,雪崩,用户体验差,继而交易下跌.为了应对这 ...

最新文章

  1. 干货|理解attention机制本质及self-attention
  2. git安装+错误:Failed to install ‘IRkernel‘ from GitHub: Git does not seem to be installed on your system
  3. 让批处理运行不显示窗口的两个方法
  4. 人工智能AI和机器学习ML对量化交易领域的影响
  5. DNS协议详解及报文格式分析
  6. php 一天只能点赞上一次,ThinkPHP3.2 实现浏览量和点赞量,每次访问页面浏览量+1以及每个登录用户只能对同一篇文章点赞一次-Go语言中文社区...
  7. JavaScript and Ruby in ABAP
  8. xx置业有限公司建议篇
  9. 大话“用户注册激活,忘记密码”发送邮件功能
  10. pythonmulti函数_python – 用于使用MultiIndex创建pandas系列的语法糖
  11. 自然语言处理——语言模型(一)
  12. 计算机科学与技术专业的论文周报,毕业设计(实习)周报
  13. Node.js详细安装教程(2021)
  14. 【MyBatis基础】(09)- 逆向工程(代码自动生成)
  15. ClickHouse可视化DBM Release 1.13.0
  16. 输入的魔法师,cherry机械键盘介绍
  17. VMware虚拟机使用Ubuntu全屏问题
  18. J-Flash下载程序
  19. Yahoo军规14条
  20. Android调用系统图库获取图片

热门文章

  1. ubuntu c/c++ 生成.so 并被python调用
  2. 为程序界面添加滑动条
  3. Qt Style Sheets Reference Qt css 样式属性列表[官版]
  4. Qt QScrollArea 用法 QScrollArea不显示 QScrollArea没铺满
  5. 树莓派 调整分区大小
  6. idea 编译jar_Flink1.9.2源码编译和使用
  7. python查看数据_使用Python获取GA数据
  8. qt传值给js及js传值给qt(qt及js的交互)
  9. QT之tableWidget删除全部行
  10. C++指针delete后赋值为NULL的一些问题