hive导入CSV数据,使用动态分区重新分区
2017-12-07 15:38
691 查看
创建数据表
hive> create database cus; hive> use cus; hive> create table telno_md5( > phone string, > md5 string ) > ROW FORMAT DELIMITED > FIELDS TERMINATED BY ',' > STORED AS TEXTFILE;
导入数据
hive> load data local inpath '/home/etluser/data/' into table telno_md5;
创建重新分区表
hive> create table telno_md5_prt( > phone string, > md5 string ) > partitioned by (prefix string);
使用动态分区,插入数据
hive> set hive.exec.dynamic.partition=true; hive> set hive.exec.dynamic.partition.mode=nonstrict; hive> set hive.exec.max.dynamic.partitions.pernode=100000; hive> set hive.exec.max.dynamic.partitions=100000; hive> set hive.exec.max.created.files=1000000000; hive> insert into table telno_md5_prt > partition (prefix) > select phone,md5,substr(md5,1,2) as prefix > from telno_md5;
* 参数的含义参考https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-DynamicPartitionInserts*
与桶表的比较
create table telno_md5_bucketed( phone string, md5 string ) clustered by(md5) into 1024 buckets; insert overwrite table telno_md5_bucketed select phone,md5 from telno_md5;
执行结果比较
数据分割方式 | 实际分割文件数 | 执行时间 | 关联查询时间 |
---|---|---|---|
dynamic partitions | 998 | 27m36s | 16m23s |
bucketed table | 668 | 16m2s | 6m5s |
相关文章推荐
- HIVE的安装配置、mysql的安装、hive创建表、创建分区、修改表等内容、hive beeline使用、HIVE的四种数据导入方式、使用Java代码执行hive的sql命令
- hive 分区partition表 创建 数据导入(动态分区插入、静态分区插入、动静态混合插入)
- [置顶] hive 动态加载数据到指定分区,以及其他hive使用的技巧
- 使用sqlldr导入多个csv数据到Oracle中,对数据中存在空格的处理
- 使用SQL*LOADER将TXT或CSV数据导入ORACLE
- Hbase 学习(十一)使用hive往hbase当中导入数据
- 使用Vista/windows 7自带分区工具 实现磁盘大小重新划分(无损数据)
- 使用SQL*Loader将CSV文件数据导入ORACLE数据表
- 使用Vista/windows 7自带分区工具 实现磁盘大小重新划分(无损数据)
- 使用POI分段落生成纯Word动态模板并导入数据
- 使用sqoop把mysql数据导入hive
- 使用SQL*Loader将CSV文件数据导入ORACLE数据表
- Sqoop_详细总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
- hive从查询中获取数据插入到表或动态分区
- 使用Vista/windows 7自带分区工具 实现磁盘大小重新划分(无损数据)
- 使用ODBC, 将CSV文件里的数据导入DataSet
- 使用Vista/windows 7自带分区工具实现磁盘大小重新划分(无损数据)
- hive从查询中获取数据插入到表或动态分区