[置顶] hive 动态加载数据到指定分区,以及其他hive使用的技巧
2016-10-26 13:23
627 查看
hive修改分隔符:
alter table tableName set SERDEPROPERTIES('field.delim'='\t');
hive根据数据创建分区,并且动态加载数据到分区
insert into table device_status_log partition( date )
select `vin`,`obd_id` , `function_id` , `message_id` ,`message_content` ,
`longitude`,`latitude` ,`speed` ,`engine_speed` ,`gps_stat`,`client_time`,
`create_time`,`analytical_result`,regexp_replace( to_date(create_time ) ,'-','') as date
from pre_device_status_log ;
如果报如下错误的话
Dynamic partition strict mode requires at least one static partition column. To turn this off set hive.exec.dynamic.partition.mode=nonstrict
按照提示在hivecCli设置 :set hive.exec.dynamic.partition.mode=nonstrict
Loading data to table obd_message.device_status_log partition (date=null)
Time taken for load dynamic partitions : 4073
Loading partition {date=20161020}
Loading partition {date=20161017}
Loading partition {date=20161024}
Loading partition {date=20161021}
Loading partition {date=20161023}
Loading partition {date=20161026}
Loading partition {date=20161015}
Loading partition {date=20161018}
Loading partition {date=20161016}
Loading partition {date=20161019}
Loading partition {date=20161025}
Loading partition {date=20161022}
Time taken for adding to write entity : 6
Partition obd_message.device_status_log{date=20161015} stats: [numFiles=1, numRows=188, totalSize=79565, rawDataSize=79377]
Partition obd_message.device_status_log{date=20161016} stats: [numFiles=1, numRows=648, totalSize=299298, rawDataSize=298650]
Partition obd_message.device_status_log{date=20161017} stats: [numFiles=1, numRows=912, totalSize=414597, rawDataSize=413685]
Partition obd_message.device_status_log{date=20161018} stats: [numFiles=1, numRows=895, totalSize=410935, rawDataSize=410040]
Partition obd_message.device_status_log{date=20161019} stats: [numFiles=1, numRows=1412, totalSize=613903, rawDataSize=612491]
Partition obd_message.device_status_log{date=20161020} stats: [numFiles=1, numRows=475, totalSize=204375, rawDataSize=203900]
Partition obd_message.device_status_log{date=20161021} stats: [numFiles=1, numRows=346, totalSize=142079, rawDataSize=141733]
Partition obd_message.device_status_log{date=20161022} stats: [numFiles=1, numRows=561, totalSize=220711, rawDataSize=220150]
Partition obd_message.device_status_log{date=20161023} stats: [numFiles=1, numRows=856, totalSize=352452, rawDataSize=351596]
Partition obd_message.device_status_log{date=20161024} stats: [numFiles=1, numRows=1997, totalSize=783701, rawDataSize=781704]
Partition obd_message.device_status_log{date=20161025} stats: [numFiles=1, numRows=1384, totalSize=556970, rawDataSize=555586]
Partition obd_message.device_status_log{date=20161026} stats: [numFiles=1, numRows=326, totalSize=133275, rawDataSize=132949]
hive查看分区
show partitions device_status_log ;
hive正则匹配去除指定分隔符:
create_time 类型为2016-10-10 00:00:00
regexp_replace( to_date(create_time
) ,'-','') as date
hive 时间函数 添加分钟或者秒
from_unixtime(unix_timestamp(client_time) + 8*3600 ) as client_time
hive 自带的时间 函数 有date_add( ) 但是只能对天进行增加减少
date date( date_add( date_sub( datediff( datetime
有些tips
创建hiveInit.sh
编辑内容如下 (此处的目的是为了能够尽量让job在本地执行,缩短等待时间,方便调试):
在编辑 hiveStart.sh
hive -i hiveInit.sh
然后修改执行权限 在当前目录执行 ./hiveStart.sh 就能以指定的配置启动hiveClient
alter table tableName set SERDEPROPERTIES('field.delim'='\t');
hive根据数据创建分区,并且动态加载数据到分区
insert into table device_status_log partition( date )
select `vin`,`obd_id` , `function_id` , `message_id` ,`message_content` ,
`longitude`,`latitude` ,`speed` ,`engine_speed` ,`gps_stat`,`client_time`,
`create_time`,`analytical_result`,regexp_replace( to_date(create_time ) ,'-','') as date
from pre_device_status_log ;
如果报如下错误的话
Dynamic partition strict mode requires at least one static partition column. To turn this off set hive.exec.dynamic.partition.mode=nonstrict
按照提示在hivecCli设置 :set hive.exec.dynamic.partition.mode=nonstrict
Loading data to table obd_message.device_status_log partition (date=null)
Time taken for load dynamic partitions : 4073
Loading partition {date=20161020}
Loading partition {date=20161017}
Loading partition {date=20161024}
Loading partition {date=20161021}
Loading partition {date=20161023}
Loading partition {date=20161026}
Loading partition {date=20161015}
Loading partition {date=20161018}
Loading partition {date=20161016}
Loading partition {date=20161019}
Loading partition {date=20161025}
Loading partition {date=20161022}
Time taken for adding to write entity : 6
Partition obd_message.device_status_log{date=20161015} stats: [numFiles=1, numRows=188, totalSize=79565, rawDataSize=79377]
Partition obd_message.device_status_log{date=20161016} stats: [numFiles=1, numRows=648, totalSize=299298, rawDataSize=298650]
Partition obd_message.device_status_log{date=20161017} stats: [numFiles=1, numRows=912, totalSize=414597, rawDataSize=413685]
Partition obd_message.device_status_log{date=20161018} stats: [numFiles=1, numRows=895, totalSize=410935, rawDataSize=410040]
Partition obd_message.device_status_log{date=20161019} stats: [numFiles=1, numRows=1412, totalSize=613903, rawDataSize=612491]
Partition obd_message.device_status_log{date=20161020} stats: [numFiles=1, numRows=475, totalSize=204375, rawDataSize=203900]
Partition obd_message.device_status_log{date=20161021} stats: [numFiles=1, numRows=346, totalSize=142079, rawDataSize=141733]
Partition obd_message.device_status_log{date=20161022} stats: [numFiles=1, numRows=561, totalSize=220711, rawDataSize=220150]
Partition obd_message.device_status_log{date=20161023} stats: [numFiles=1, numRows=856, totalSize=352452, rawDataSize=351596]
Partition obd_message.device_status_log{date=20161024} stats: [numFiles=1, numRows=1997, totalSize=783701, rawDataSize=781704]
Partition obd_message.device_status_log{date=20161025} stats: [numFiles=1, numRows=1384, totalSize=556970, rawDataSize=555586]
Partition obd_message.device_status_log{date=20161026} stats: [numFiles=1, numRows=326, totalSize=133275, rawDataSize=132949]
hive查看分区
show partitions device_status_log ;
hive正则匹配去除指定分隔符:
create_time 类型为2016-10-10 00:00:00
regexp_replace( to_date(create_time
) ,'-','') as date
hive 时间函数 添加分钟或者秒
from_unixtime(unix_timestamp(client_time) + 8*3600 ) as client_time
hive 自带的时间 函数 有date_add( ) 但是只能对天进行增加减少
date date( date_add( date_sub( datediff( datetime
有些tips
创建hiveInit.sh
编辑内容如下 (此处的目的是为了能够尽量让job在本地执行,缩短等待时间,方便调试):
SET mapred.job.tracker=local; set mapred.reduce.tasks = 1; set hive.exec.mode.local.auto.input.files.max=1000; set hive.exec.mode.local.auto.inputbytes.max=50000000; set hive.exec.mode.local.auto.tasks.max=10; set hive.exec.mode.local.auto=true; set hive.cli.print.current.db=true; set hive.cli.print.header=true; show databases; use obd_message;
在编辑 hiveStart.sh
hive -i hiveInit.sh
然后修改执行权限 在当前目录执行 ./hiveStart.sh 就能以指定的配置启动hiveClient
相关文章推荐
- Echarts的使用以及动态加载数据
- hive导入CSV数据,使用动态分区重新分区
- [置顶] Android_ListView_Adapter使用和数据动态加载
- 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用
- [置顶] Android_ListView_Adapter使用和数据动态加载
- [置顶] Android_Loader_使用LoaderManager管理Loader实现异步动态加载数据
- Hive - 建表和加载数据指令小结 以及使用Load data指令的注意事项
- 难点总结:Jquery动态加载数据库中的数据(解答人:郭哲 方式:讲述jquery原理及一些函数的使用方法,学会看帮助文档)
- 不使用if,?:以及其他任何条件判断的语法,找出a跟b中数据的大者
- 使用SqlBulkCopy类加载其他源数据到SQL表
- 利用JQuery的load函数动态加载页面 以及jQuery动态加载页面和请求所返回的数据
- ListView动态加载数据模板(使用xml布局)
- ListView动态加载数据模板(使用代码布局)
- 还原Wss3.0内容数据库时遇到:"ComputerName\Microsoft##SSEE 上的 WSS_Content 包含用户定义的架构。数据库在能够使用之前必须为空。请删除所有表、存储过程以及其他对象,或使用其他数据库。 " 的提示,无法加载内容数据库
- DropDownList的动态加载,detailview使用以及FileUpload的上传
- Silverlight中,使用ADO.NET Entity,WCF RIA,动态加载指定数据库的实现。
- 使用Ajax动态加载数据
- 使用SqlBulkCopy类加载其他源数据到SQL表[转]
- Extjs 树的动态更改加载地址,以及动态加载已有子节点其他节点问题!