TDH建表


本篇为个人工作及学习中自行整理的TDH的部分建表语句,各位可以参考一下,有过时的、理解错的,欢迎各位指正。

orc表建表语句,带有分区,开启事务功能

create table if not exists orc_table_lee
(table_key string comment '主键'
,data_date string comment '数据日期')
comment 'ORC分区表'
partitioned by (partid string) --分区键
clustered by (table_key) --分桶键
into 23buckets
stored as orc
tblproperties('transactional' = 'true')
;

external外表建表语句

create [EXTERNAL] table if not exists orc_table_lee
(table_key string comment '主键'
,data_date string comment '数据日期')
comment '外表'
row format delimited
fields terminated by '|' --数据分隔符
location '/insepter1/data/lee/orc_table_lee' --hdfs路径

external外表+数据稽查功能

CREATE EXTERNAL TABLE table_lee (column1 datatype1, column2 datatype2, ...)
LOG ERRORS INTO error_table_name [OVERWRITE] --关键字 `log errors into`;`overwrite` 数据重写
[SEGMENT REJECT LIMIT n [ ROWS | Percent ] ]

关键字说明:

   error_table_name是存放当前表脏数据信息的Error
             Table的名称,如果不存在系统会自动创建一个。只能在创建表时指定。注意关键字LOG ERRORS INTO。
             
             若允许Overwrite Error
             Table,需在相应位置写“OVERWRITE”,否则忽略。禁止Overwrite的坏处是每次都会在原有记录的基础上写入脏数据信息,使该Error
             Table不断扩增;好处是能追溯至更久远的信息。用户应根据需求设置。
             
             若需执行REJECT策略,应补充“SEGMENT REJECT LIMIT
             n…​”部分,如果没有需求可忽略。n是REJECT阈值,表示REJECT之前允许的非法数据的行数或比例。脏数据数量超过n的限定时,会直接报错,且错误信息不录入Error
             Table。 应注意
             ,分布式结构下,由于语句的执行被切分交给不同task实现,所以n是相对于一个task中的数据行数而言的,而并非总数据行数。
             
             没有指定Error Table的表也可以受到数据稽查的保护,只是错误信息不会收录于Error Table。
             
             指定了Error Table并不代表启动了数据稽查,需要通过后面将介绍的开关控制。 

下面是和数据稽查相关的三个开关,用于控制其工作特性:

   SET inceptor.data.audit = true/false; 
   
   SET inceptor.strict.evaluate = true/false; 
   
   SET inceptor.notnull.audit = true/false;   数据稽查总开关,开启时会做脏数据和NOT
   NULL检查,默认关闭。 是否在遇到脏数据时报Exception,默认关闭。 是否对NOT NULL
   Constraint进行检查,默认关闭。 inceptor.data.audit是Top
   Level开关,设为true后,后面两个开关强制为true,启动inceptor.data.audit之后再对两个子开关进行设置将不起作用。
   
   后两个开关可以在inceptor.data.audit关闭时做设置。区别在于,如果开启data.audit,关于脏数据和NOT
   NULL限制的报错都会写入Error
   Table;若在关闭data.audit后启动strict.evaluate或notnull.audit,执行对应检测时报错将被打印于界面。

数据导入:
[LOCAL]是本地路径选项,加上选项后 <path>是 inceptor server 所在节点的本地目录。
不加[LOCAL]是指HDFS上的文件。

LOAD DATA [LOCAL] INPATH '/LOCALWORKSPACE/manual-ut/manual_data/manual_crud_tmp/table_lee.txt' OVERWRITE INTO TABLE employee_err;

Error Table的属性控制:

	通过如下语句停止对table_name数据稽查,不再对其记录脏数据信息。注意这只是针对table_name的变化,不影响其他表。
ALTER TABLE table_name SET ERRORS LOG OFF;
	使数据稽查重新作用于table_name,此时必须设置OVERWRITE和REJECT的开关状态,n必须为整数。也可以用于修改OVERWRITE和REJECT的设置。
ALTER TABLE table_name SET ERRORS LOG ON OVERWRITE [on|off] REJECT [on|off] LIMIT n ROWS;

hbase外表建表语句,与hbase的表不进行绑定的建表方式

create table table_lee
(table_key string comment '主键'
,data_date string comment '数据日期')
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.hbase.HBaseSerDe' 
STORED BY 
  'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ( 
  'colelction.delim'='|', 
  'serialization.format'='1','hbase.columns.mapping'=':key,f0:begin_time,f0:over_time,f0:pro_name,f0:log_object,f0:row_count,f0:log_action,f0:log_code,f0:log_desc')
TBLPROPERTIES (
  'hbase.table.name'='table_lee');

hbase外表建表语句,与hbase的表不进行绑定的建表方式

create external table table_lee
(table_key string comment '主键'
,data_date string comment '数据日期')
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.hbase.HBaseSerDe' 
STORED BY 
  'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ( 
  'colelction.delim'='|', 
  'serialization.format'='1',   'hbase.columns.mapping'=':key,f0:begin_time,f0:over_time,f0:pro_name,f0:log_object,f0:row_count,f0:log_action,f0:log_code,f0:log_desc')
TBLPROPERTIES (
  'hbase.table.name'='table_lee');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

D2cOneluo

万一有大佬给个打赏呢,对不对。

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

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

打赏作者

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

抵扣说明:

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

余额充值