Hive CheatSheet

 

1. Hive导出到.csv文件

由于Hive中导出的文件不是以逗号,而是以Tab(或者说'\t')为分隔符的,因此,下面的命令自己试过可以转换为逗号分隔的文件,也就是真正的csv文件。

当然,有时候可能还需要跟转码的工具进行组合,转换编码格式。

sed -i 's/\t/,/g' xxx.csv

当然,第一步是

hive -e "SQL语句" > xxx.csv

所以完整的流程代码是

hive -e "SQL query" > xxx.csv
sed -i 's/\t/,/g' xxx.csv

2. Hive导入.csv文件建表

注意:

为了配合csv文件,建表的时候,最后一行的row format delimited fields terminated by ',';必须要有,否则列会出问题

(这牵涉到csv和tsv等问题)

所以,在Hive下完整的删表建表导数据的流程如下:

--删表建表:
drop table if existstablename;
CREATE TABLE if not exists tablename(
    scope_id STRING COMMENT 'xxxx',
    web_id STRING COMMENT 'xxx',
    from_sku_id STRING COMMENT 'xxxx',
    to_sku_id STRING COMMENT 'xxxx',
    switching_prob FLOAT COMMENT 'xxxx',
    predictor STRING COMMENT 'xxxx'
)
COMMENT '自替代性预测结果表'
PARTITIONED BY (dt STRING, cd3 STRING)
row format delimited fields terminated by ',';
--导入数据:
load data local inpath '/home/mart_vdp/anshuai/1389_pre_output.csv' 
into table app.app_vdp_slct_pre_self_switching_prob PARTITION(dt='2017-03-31' ,cd3='1389');

3. Hive看包括行数在内的信息

show tblproperties table_name;

desc formatted table_name;

4. Hive一次写入一个表的多个分区的数据

set hive.exec.dynamici.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table tablename partition(partition_column)
select col1, col2,..., partition_column from tablename2

只要把带插入数据表格的全部非分区字段,后面在附上分区字段,就会按照分区字段的值插入相应分区。

5. Hive一次写入大量分区

--一个dml语句允许创建的所有分区的最大数量
set hive.exec.max.dynamic.partitions=100000;
--每一个mapreduce job允许创建的分区的最大数量,如果超过了这个数量就会报错
set hive.exec.max.dynamic.partitions.pernode=100000;
--hive.exec.max.created.files :所有的mapreduce job允许创建的文件的最大数量
set hive.exec.max.created.files=10000;

6. Hive运行中避免小文件产生的方法

--在MapReduce的任务结束时合并小文件
set hive.merge.mapredfiles=true;

7. Hive开启本地模式

set hive.exec.mode.local.auto=true;

8. org.apache.hadoop.mapreduce.counters.LimitExceededException: Too many counters: 201 max=200 这个错误的解决办法

set hive.exec.dynamici.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.dynamic.partitions=100000;
set hive.exec.max.dynamic.partitions.pernode=100000;
set hive.exec.max.created.files=50000;
set mapreduce.job.counters.group.name.max=100000;
set mapreduce.job.counters.counter.name.max=100000;
--这句话很重要!
set mapreduce.job.counters.max=100000;

9. Hive输出加上表头

set hive.cli.print.header=true;

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值