博客
关于我
TDH建表语句汇总
阅读量:373 次
发布时间:2019-03-05

本文共 4881 字,大约阅读时间需要 16 分钟。

TDH建表语句汇总

外表、ES表、es分区表、es范围分区表、ORC表范围分区表

TEXT表

TEXT表是文本格式的表,是Inceptor默认的表格式。在数据量大的情况下,TEXT表的统计和查询性能较低;TEXT表也不支持事务处理,所以通常用于将文本文件中的原始数据导入Inceptor中;不建议在任何计算场景中使用TEXT表。

CREATE EXTERNAL TABLE test.t1_ext(     id string    ,legal_no string    ,branch_tree_no string    ,branch_name string    ,branch_abbr string    ,bank_no string    ,branch_no string    ,org_code string    ,del_f string ) LOCATION '/tmp/test/t1'; -- 注意目录权限

上面是基础语句,可在列分隔符、换行符都默认的情况下使用;下面为自定义列分隔符、换行符语法的简单说明:

CREATE EXTERNAL TABLE test.t1_ext(     xxx string )  LOCATION '/tmp/test/t1'  ROW FORMAT DELIMITED [FIELDS TERMINATED  BY '        ' [ESCAPED BY '          ']] --             为列分隔符,默认值为“\001”。如果文本中的实际数据包含指定的列分隔符,可以用 ESCAPED BY 指定转义符,将列分隔符和实际数据进行区别,转义符无默认值。 [COLLECTION ITEMS TERMINATED BY '              '] --                 为复杂数据类型(ARRAY/MAP/STRUCT)中的字段分隔符,默认值 为'\002'。 [MAP KEYS TERMINATED BY '         '] -- 为*MAP* 类型中将键和值分隔的分隔符,默认值为'\003'。 [LINES TERMINATED BY ' ']; -- 为换行符,默认值为'\n'。

CSV表

CSV表的数据来源是CSV文件。CSV文件是纯文本文件,文件中包含数据以及分隔符;和TEXT表相似,CSV表最常见的使用场景是用于建外表,将CSV文件中的数据导入Inceptor;不建议在任何计算场景中使用CSV表。

CREATE EXTERNAL TABLE test.t2_csv_ext(   id string,   legal_no string,   branch_tree_no string,   branch_name string,   branch_abbr string,   bank_no string,   branch_no string,   org_code string,   del_f string )STORED AS CSVFILELOCATION '/tmp/test/t2';-- 注意目录权限

上面是基础语句,可在列分隔符、换行符都默认的情况下使用;下面为自定义列分隔符、换行符语法的简单说明:

CREATE EXTERNAL TABLE test.t2_csv_ext(xxx string )STORED AS CSVFILELOCATION '/tmp/test/t2'[TBLPROPERTIES (['field.delim'='        '],-- 指定字段分隔符,默认值为 “,”。由“          ”分隔的字段会被解析为不同列中的字段。['line.delim'='            '],-- 指定换行符,默认值为“\n”。['serialization.null.format'=''],-- 指定NULL值字符,默认为空字段,也就是说Inceptor会认为文件中两个连续的两个字段分隔符中有NULL值。['quote.delim'='              '],-- 指定用什么字符作为 quote_delimiter,默认值为“"”。-- 如果字段本身包含了字段分隔符、换行符或者NULL值字符作为数据的一部分,将该字段放在两个quote_delimiter 字符之间可以让Inceptor将字段内部出现的字段分隔符和换行符作为数据处理。-- 在一对 quote_delimiter 包裹的字段内部,quote_delimiter 是自身的转义符:如果出现连续的两个 quote_delimiter,那么Inceptor会将第二个 quote_delimiter 作为数据的一部分处理,将第一个 quote_delimiter 作为第二个的转义符。['                ']='         '];

ORC表

ORC非事务表的建表只需在建表语句中用 STORED AS ORC 指定存储格式为ORC即可。

普通ORC表

ORC事务表相对与Inceptor中的其他表支持更多CRUD(增删改)语法,ORC事务表的建表则需要几个额外的重点步骤:为表分桶:为了保证增删改过程中的性能,我们要求ORC事务表必须是部分排序或者全局排序的,但是全局排序又过于耗费计算资源,因此我们要求ORC表必须是分桶表。在 TBLPROPERTIES 里需要加上 "transactional"="true",以标识这是一个要用作事务操作的表。如果表的数据量特别大,建议在分桶的基础上再分区,ORC事务表支持单值分区和范围分区。

CREATE TABLE test.t3_orc(teller string DEFAULT NULL COMMENT '操作员类型',trade_serial int DEFAULT NULL COMMENT '流水号',otrade_serial int DEFAULT NULL COMMENT '原交易流水',flag string DEFAULT NULL COMMENT '标志',side smallint DEFAULT NULL COMMENT '发起方',optcode smallint DEFAULT NULL COMMENT '交易码',serv_type string DEFAULT NULL COMMENT '服务类型',busin_type smallint DEFAULT NULL COMMENT '业务类型',trade_type smallint DEFAULT NULL COMMENT '交易类型',result smallint DEFAULT NULL COMMENT '交易结果',serv_date date DEFAULT NULL COMMENT '服务日期',serv_time string DEFAULT NULL COMMENT '服务时间')COMMENT '电话银行交易流水'STORED AS ORC;

ORC表范围分区表

DROP TABLE IF EXISTS test.employee_orc;CREATE TABLE test.employee_orc (  eid STRING,  name STRING,  age TINYINT,  height DOUBLE,  tag STRING)PARTITIONED BY RANGE (`level` string)(partition level_2 values less than ('2'),partition level_3 values less than ('3'),partition level_4 values less than ('4'),partition level_5 values less than ('5'),partition level_max values less than (maxvalue))CLUSTERED BY (eid) into 11 bucketsSTORED AS ORC_TRANSACTION;

创建外表

USE test;DROP TABLE IF EXISTS test.employee_ext;CREATE EXTERNAL TABLE test.employee_ext ( eid STRING, name STRING, age STRING, height STRING, tag STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY ','LOCATION '/tmp/employee_ext';

创建外表

DROP TABLE IF EXISTS test.employee_ext_l;CREATE EXTERNAL TABLE test.employee_ext_l ( eid STRING, name STRING, age STRING, height STRING, tag STRING, `level` STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY ','LOCATION '/tmp/employee_ext_l';

ES表

创建ES表

CREATE TABLE test.employee_es (  eid STRING,  name STRING,  age TINYINT,  height DOUBLE,  tag STRING)STORED AS ES;

插入数据

INSERT INTO test.employee_es SELECT * FROM test.employee_ext;insert into test.employee_es select 123,"wj",12,1231,"dada" from system.dual;

ES范围分区表

创建ES范围分区表

DROP TABLE IF EXISTS test.employee_es_ptn;CREATE TABLE test.employee_es_ptn (  eid STRING,  name STRING,  age TINYINT,  height DOUBLE,  tag STRING)PARTITIONED BY RANGE (`level` string)(partition level_2 values less than ('2'),partition level_3 values less than ('3'),partition level_4 values less than ('4'),partition level_5 values less than ('5'),partition level_max values less than (maxvalue))STORED AS ESwith shard number 10replication 1;

插入数据

INSERT INTO test.employee_es_ptn partition level_2 SELECT 123,"wj",12,1231,"dada",'1' FROM system.dual;INSERT INTO test.employee_es_ptn partition level_2 SELECT 123,"wj",12,1231,"dada",ceil(rand()*100%5) FROM system.dual WHERE `level`='1';

转载地址:http://plrg.baihongyu.com/

你可能感兴趣的文章
mysql 断电数据损坏,无法启动
查看>>
MySQL 日期时间类型的选择
查看>>
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
查看>>
MySQL 是如何加锁的?
查看>>
MySQL 是怎样运行的 - InnoDB数据页结构
查看>>
mysql 更新子表_mysql 在update中实现子查询的方式
查看>>
MySQL 有什么优点?
查看>>
mysql 权限整理记录
查看>>
mysql 权限登录问题:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)
查看>>
MYSQL 查看最大连接数和修改最大连接数
查看>>
MySQL 查看有哪些表
查看>>
mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
查看>>
MySql 查询以逗号分隔的字符串的方法(正则)
查看>>
MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
查看>>
mysql 查询数据库所有表的字段信息
查看>>
【Java基础】什么是面向对象?
查看>>
mysql 查询,正数降序排序,负数升序排序
查看>>
MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
查看>>
mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
查看>>
mysql 死锁(先delete 后insert)日志分析
查看>>