将数据导入hive,再将hive表导入hbase
将数据到入hive的无分区表,再将无分区表导入hive的有分区表:
--备份
create table tds_package_secinfobk as select * from tds_package_secinfo;
--导入分区表
tds_package_secinfo CREATE TABLE tds_package_secinfo
(package_name string,program_name string,keyhash string)
PARTITIONED BY(risk_label string)
ROW FORMAT delimited fields terminated by '\t'
LOCATION '/user/hive/warehouse/tds_package_secinfo' LOAD DATA INPATH '/user/hive/warehouse/邪教app.txt' OVERWRITE INTO TABLE tds_package_secinfo PARTITION(risk_label='邪教app'); --无分区表导有分区表
set hive.exec.max.dynamic.partitions= ;
set hive.exec.max.dynamic.partitions.pernode= ;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.support.concurrency=false;
set mapreduce.job.reduce.slowstart.completedmaps=;
insert into table tds_package_secinfo partition(risk_label)
select package_name ,'' ,'' ,risk_label from hue_package_secinfo; hbase_package_secinfo
查询该hive表的包名和标签列:
select package_name,risk_label from tds_package_secinfo
hbase表需要先建表,才能插入数据
建表:
CREATE TABLE hbase_package_secinfo
(package_name string,risk_label string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES
("hbase.columns.mapping" = ":key,info:risk_lable") TBLPROPERTIES ("hbase.table.name"="hbase_package_secinfo");
插入数据:
insert into hbase_package_secinfo
select package_name,risk_label from tds_package_secinfo
-------------------------------------------------建表完成-----------------------------------------------------------
查询语句:
select count(*),dt from MDS_ENGINE_VIR_URL group by dt order by dt desc; select count(*),dt from MDS_ENGINE_WARESOURCE_INFO_NEW group by dt order by dt desc; select count(*),dt from MDS_VICTIM_INFO group by dt order by dt desc;
--------------------------------------------
异常:
Error: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"package_name":"","program_name":"","keyhash":"","risk_label":"__HIVE_DEFAULT_PARTITION__"}
at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:)
at org.apache.hadoop.mapred.YarnChild$.run(YarnChild.java:)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:)
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row {"package_name":"","program_name":"","keyhash":"","risk_label":"__HIVE_DEFAULT_PARTITION__"}
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:)
at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:)
... more
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.hive.serde2.SerDeException: java.lang.IllegalArgumentException: Row length is
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:)
at org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:)
at org.apache.hadoop.hive.ql.exec.TableScanOperator.processOp(TableScanOperator.java:)
at org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.forward(MapOperator.java:)
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:)
... more
Caused by: org.apache.hadoop.hive.serde2.SerDeException: java.lang.IllegalArgumentException: Row length is
at org.apache.hadoop.hive.hbase.HBaseSerDe.serialize(HBaseSerDe.java:)
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:)
... more
Caused by: java.lang.IllegalArgumentException: Row length is
at org.apache.hadoop.hbase.client.Mutation.checkRow(Mutation.java:)
at org.apache.hadoop.hbase.client.Put.<init>(Put.java:)
at org.apache.hadoop.hbase.client.Put.<init>(Put.java:)
at org.apache.hadoop.hbase.client.Put.<init>(Put.java:)
at org.apache.hadoop.hive.hbase.HBaseRowSerializer.serialize(HBaseRowSerializer.java:)
at org.apache.hadoop.hive.hbase.HBaseSerDe.serialize(HBaseSerDe.java:)
... more
原因:表中的内容为空,所以插不进去
解决方法:加上条件:
where risk_label!='__HIVE_DEFAULT_PARTITION__'
所以插入语句应该为:
insert into hbase_package_secinfo
select package_name,risk_label from tds_package_secinfo where risk_label!='__HIVE_DEFAULT_PARTITION__';
最后删除risk_label":"__HIVE_DEFAULT_PARTITION__的那个分区
ALTER TABLE tds_package_secinfo DROP IF EXISTS PARTITION(risk_label='__HIVE_DEFAULT_PARTITION__' );
将数据导入hive,再将hive表导入hbase的更多相关文章
- 【Hive二】 Hive基本使用
Hive基本使用 创建数据库 创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db create database 库名; 避免要创建的数据库已经存在错 ...
- 己亥清爽恢复系列之数据文件4篇:DROP表后如何恢复(非闪回技术)
己亥清爽系列说明:清爽系列是作为恢复系列的基础篇,基于FS(File System)文件系统的手工还原恢复,也叫基于用户管理的还原恢复,来自于博客园AskScuti. 实验说明:你不小心Drop掉了一 ...
- Sqoop- sqoop将mysql数据表导入到hive报错
sqoop将mysql数据表导入到hive报错 [root@ip---- lib]# sqoop import --connect jdbc:mysql://54.223.175.12:3308/gx ...
- Hive如何加载和导入HBase的数据
当我们用HBase 存储实时数据的时候, 如果要做一些数据分析方面的操作, 就比较困难了, 要写MapReduce Job. Hive 主要是用来做数据分析的数据仓库,支持标准SQL 查询, 做数据分 ...
- hive的数据定义之创建数据库和表
1.对数据库的操作 create database hive_db //创建数据库hive_db create table hive_db.test(字段内容及其格式省略) //在数据库hive_db ...
- 一起学Hive——详解四种导入数据的方式
在使用Hive的过程中,导入数据是必不可少的步骤,不同的数据导入方式效率也不一样,本文总结Hive四种不同的数据导入方式: 从本地文件系统导入数据 从HDFS中导入数据 从其他的Hive表中导入数据 ...
- 大数据【五】Hive(部署;表操作;分区)
一 概述 就像我们所了解的sql一样,Hive也是一种数据仓库,不同的是hive是在hadoop大数据生态圈中所用.这篇博客我主要介绍Hive的简单表运用. Hive是Hadoop 大数据生态圈中的数 ...
- sqoop数据导入到Hdfs 或者hive
用java代码调用shell脚本执行sqoop将hive表中数据导出到mysql http://www.cnblogs.com/xuyou551/p/7999773.html 用sqoop将mysql ...
- 【原创】大叔经验分享(25)hive通过外部表读写hbase数据
在hive中创建外部表: CREATE EXTERNAL TABLE hive_hbase_table(key string, name string,desc string) STORED BY ' ...
随机推荐
- Linux篇:因为修改了/etc/sudoers 文件的权限导致的问题
因为想要把sudo变成免密码所以就查了网上的教程.说是要修改/etc/sudoers文件,但是修改的时候发现这个文件是只读, 所以就 /etc/sudoers 结果就导致了接下来用sudo的时候提示如 ...
- 保证IO流不出错
package com.io.demo1; import java.io.FileInputStream;import java.io.IOException; /** * 测试IO * io流,输入 ...
- C#获取网络图片
简单获取图片 string url = zhi_txt.Text;//图片地址 string dizhi = lujing.Text;//图片下载后保存路径及图片名称要写在一块 WebClient w ...
- Github上的1000多本免费电子书重磅来袭!
Github上的1000多本免费电子书重磅来袭! 以前 StackOverFlow 也给出了一个免费电子书列表,现在在Github上可以看到时刻保持更新的列表了. 瞥一眼下面的书籍分类目录,你就能 ...
- 如何理解Java中参数传递只能传值?
以前学习C#的时候,是完全在工作岗位上学习,一些底层较为深入的道理都不是很清楚.如今学习了Java,对于Java参数传递只能传值,不能传引用(指针)感到很困惑,在C#中不是常常说把某个引用传递到函数中 ...
- 使用polarssl进行RSA加密解密
RSA算法的原理就不提了,网上有很多介绍的文章,因为项目中使用RSA加密,所以需要找一个RSA加密的算法,之前尝试过使用Crypto++库,无奈Crypto++其中使用了大量的模版,各种继承,看着头大 ...
- IDEA的terminal设置成Linux的终端一样
方式一:通过在Windows上安装Linux命令行工具 前提:需要安装Linux终端的命令行工具,并且最好可以安装 Gow (一个Windows下模拟Linux命令行工具集合,它集成了 Liunx 环 ...
- sphinx调用API参考(官方手册)
API的参考实现是用PHP写成的,因为(我们相信)较之其他语言,Sphinx在PHP中应用最广泛.因此这份参考文档基于PHP API的参考,而且这节中的所有的代码样例都用PHP给出. 当然,其他所有A ...
- Python登录小程序
------------------------------------------------- 主要实现功能 1.用户输入用户名,在用户名文件中查找对应的用户,若无对应用户名则打印输入错误 2.用 ...
- java设计模式之门面模式以及在java中作用
门面模式在Tomcat中有多处使用,在Request和Response对象封装,从ApplicationContext到ServletContext封装中都用到了这种设计模式. 一个系统可以有几个门面 ...