mysql表数据以本地文件方式导入Hive
生活随笔
收集整理的這篇文章主要介紹了
mysql表数据以本地文件方式导入Hive
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、mysql生成數據
1)創建數據庫和數據表,腳本如下:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
CREATE SCHEMA IF NOT EXISTS `auditdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `auditdb` ;
-- -----------------------------------------------------
-- Table `auditdb`.`t_evninfo1`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `auditdb`.`t_evninfo1` ;
CREATE ?TABLE IF NOT EXISTS `auditdb`.`t_evninfo1` (
? `server_ip` VARCHAR(20) NOT NULL ,
? `client_ip` VARCHAR(20) NOT NULL ,
? `ip_protocol` TINYINT NOT NULL ,
? `db_protocol` VARCHAR(20) NULL ,
? `statement` VARCHAR(1000) NOT NULL?
? ?)
ENGINE = InnoDB;
2)存儲過程插入數據
mysql->
DELIMITER //?
create procedure analog()?
begin?
declare i int;?
set i=0;
while i<2000000 do?
INSERT INTO t_evninfo1(server_ip,client_ip,ip_protocol,db_protocol,statement) VALUES ('10.18.18.1','10.18.18.101',1,'tns','select * from tables');?
set i = i+1;
end while;
end;
//?
mysql->call analog;
生成200萬條記錄。
3)導出表數據
mysql->mysqldump -u root -p auditdb t_evninfo1 > info.sql
info.db文件大小120M。
二、hive本地文件導入
1)hive建表:
hive>CREATE TABLE t_evninfo2(server_ip STRING,client_ip STRING,ip_protocol INT,db_protocol STRING,statement STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE; ?
注意info.sql的分隔符,最好將導出的info.sql本地簡單加工下。
2)本地文件導入
hive>LOAD DATA LOCAL INPATH '/home/hadoop/info.sql' INTO TABLE t_evninfo2;
3)查看導入記錄
hive>select * from t_evninfo2 limit 10;
當然也可以通過sqoop遷移來實現mysql數據移植到hadoop平臺。
1)創建數據庫和數據表,腳本如下:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
CREATE SCHEMA IF NOT EXISTS `auditdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `auditdb` ;
-- -----------------------------------------------------
-- Table `auditdb`.`t_evninfo1`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `auditdb`.`t_evninfo1` ;
CREATE ?TABLE IF NOT EXISTS `auditdb`.`t_evninfo1` (
? `server_ip` VARCHAR(20) NOT NULL ,
? `client_ip` VARCHAR(20) NOT NULL ,
? `ip_protocol` TINYINT NOT NULL ,
? `db_protocol` VARCHAR(20) NULL ,
? `statement` VARCHAR(1000) NOT NULL?
? ?)
ENGINE = InnoDB;
2)存儲過程插入數據
mysql->
DELIMITER //?
create procedure analog()?
begin?
declare i int;?
set i=0;
while i<2000000 do?
INSERT INTO t_evninfo1(server_ip,client_ip,ip_protocol,db_protocol,statement) VALUES ('10.18.18.1','10.18.18.101',1,'tns','select * from tables');?
set i = i+1;
end while;
end;
//?
mysql->call analog;
生成200萬條記錄。
3)導出表數據
mysql->mysqldump -u root -p auditdb t_evninfo1 > info.sql
info.db文件大小120M。
二、hive本地文件導入
1)hive建表:
hive>CREATE TABLE t_evninfo2(server_ip STRING,client_ip STRING,ip_protocol INT,db_protocol STRING,statement STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE; ?
注意info.sql的分隔符,最好將導出的info.sql本地簡單加工下。
2)本地文件導入
hive>LOAD DATA LOCAL INPATH '/home/hadoop/info.sql' INTO TABLE t_evninfo2;
3)查看導入記錄
hive>select * from t_evninfo2 limit 10;
當然也可以通過sqoop遷移來實現mysql數據移植到hadoop平臺。
總結
以上是生活随笔為你收集整理的mysql表数据以本地文件方式导入Hive的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jsoup实现Iteye自动登录
- 下一篇: Hadoop平台日志结构