0
点赞
收藏
分享

微信扫一扫

Hive-创建表的几种方式


加载本地文件创建内部表

hive -e "
use test_bigdata;
drop table data_result;
CREATE table data_result(
c1 String
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
LOAD DATA LOCAL INPATH 'data_id.txt' INTO TABLE data_result;"

创建外部表

hive -e "
use test_bigdata;
drop table data_result;
CREATE table data_result(
c1 String,
c2 string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/output/20200618';"

创建外部分区表

hive -e "
use test_bigdata;
drop table data_result;
CREATE table data_result(
c1 String,
c2 string
)
PARTITIONED BY (
`date` string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LOCATION '/output/';

alter table data_resultadd if not exists partition(date=20200601)
location '/output/20200601';
"

创建查询表

hive -e "
use test_bigdata;
drop table data_result1;
create table IF NOT EXISTS data_result1 as
select
c1,
c2
from test_bigdata.data_result;"

创建查询分区表

hive -e "
use test_bigdata;
drop table data_result1;
create table IF NOT EXISTS data_result1 partition (date='20200601') as
select
c1,
c2
from test_bigdata.data_result;"

一些参数,设置lzo存储

hive -e "
use test_bigdata;
drop table data_result;
CREATE table data_result(
c1 String,
c2 string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS
INPUTFORMAT 'com.hadoop.mapred.DeprecatedLzoTextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION '/output/20200618';"

查询插入数据以lzo压缩存储

hive -e "
use test_bigdata;
drop table data_result2;
SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
create table IF NOT EXISTS data_result2
STORED AS INPUTFORMAT
'com.hadoop.mapred.DeprecatedLzoTextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
as
select
c1,
c2
from test_bigdata.data_result;"

其它参数

set hive.exec.parallel=true;  //控制一个sql中多个可并行执行的job的运行方式
set spark.sql.hive.mergeFiles=true; //合并小文件
set hive.merge.mapfiles = true #输出时进行合并:
set hive.merge.mapredfiles= true #在Map-only的任务结束时合并小文件
set hive.merge.smallfiles.avgsize=512000000; 当输出文件平均大小小于设定值时,启动合并操作。这一设定只有当hive.merge.mapfiles或hive.merge.mapredfiles设定为true时,才会对相应的操作有效。
set mapreduce.map.memory.mb = 8192; -- 每个Map Task需要的内存量
set mapreduce.reduce.memory.mb = 10500; -- 每个Reduce Task需要的内存量
set mapreduce.map.java.opts = - Xmx9192m; -- 设置Map任务JVM的堆空间大小,默认-Xmx1024m
set mapreduce.reduce.java.opts = - Xmx10000m; -- 设置reduce任务JVM的堆空间大小,默认-Xmx1024m
set hive.auto.convert.join = true; --当链接的两个表是一个比较小的表和一个特别大的表的时候,我们把比较小的table直接放到内存中去,然后再对比较大的表格进行map操作
set mapreduce.job.queuename=queue1;--设置队列
SET mapred.map.tasks=12; --设置map数量
SET mapred.reduce.tasks=12; --设置reduce数量将多个输入文件合并后送给mapper处理,从而减少mapper的数量。
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; 将多个输入文件合并后送给mapper处理,从而减少mapper的数量。


举报

相关推荐

0 条评论