`
greemranqq
  • 浏览: 965912 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

sqoop 数据导入脚本

阅读更多

一.序言

     简单分享个sqoop 从mysql 集群导入到hdfs hive-table 里面进行分析的例子。

     sqoop1.4.6,hadoop2.7,hive1.2.1 ,因为 环境原因,sqoop 没有升级到2~。~

 

二.简单步骤

    1.base_import.sh :  集中配置一些链接信息,和公共参数,并引入其他脚本执行

    2.base_common.sh : 要导入表的基本信息,包含字段,分组 where 条件 等

    3.run.sh : 循环执行模板,通过1,2脚本参数传入,进行执行

    4.*.sql : hive  里面的 建表建库信息,最好提前建立

 

三.脚本

   3.1 base_import.sh     

#!/bin/sh
# 执行,run.sh 和当前文件同级
base_home='/home/sh_dir/queue'
# 所有数据库信息
export username='admin'
export password='123'
export database_url='jdbc:mysql://1.1.1.1:3306'

#1.创建表 /sql
#2.创建分区关联
#3.添加导入新表的结构
#4.导入

#时间控制:指定时间,转换微秒时间,字符串转换,后一天转换
export init_date='2015-07-08 00:00:00'
export min_time=`date -d "${init_date}" +%s000`
export mid_time=`date -d "${init_date} 1 days" "+%Y-%m-%d"`
export max_time=`date -d "${mid_time}"  +%s000`

# 创建表结构和分区:只需要加载一次
# hive -f sql/queue.sql
# hive -f sql/queue_message.sql


# 加载导入的数据项
source ${base_home}/base_common.sh
# 执行导入
source ${base_home}/run.sh

 

 

   3.2 base_common.sh
 

#!/bin/sh
# 变的参数定义
# 数据库名字和数据库数量
export base_database_name='queue'
# database 数量,一共4个库
export dnum=4
# 要导入的表
export tables=(queue queue_message)

# 导入进hive 库的名称
export target_database='queue'



# --------------  queue表 最为例子  ----------------------
export tb1='queue'
# 分割数据
export $tb1'_split_by'="create_time"
# where 条件
export $tb1'_where'="$(eval echo \$${tb1}_split_by)>=${min_time} and $(eval echo \$${tb1}_split_by)<${max_time} "
# 导出字段
export $tb1'_columns'="queue_id,create_time,op_time"


# --------------  其他表例子  ----------------------

 

 

    3.3 run.sh

   

#!/bin/sh

# 循环导入,从1开始
for ((i=1;i<=$dnum;i++))
do
	for table_name in ${tables[*]}
	do
        # 导入
		sqoop import \
        -connect ${database_url}/${base_database_name}${i}  -username $username -password $password \
        -table ${table_name} \
        -hive-import  \
        -hive-database ${target_database} \
        -hive-table ${table_name}${i} \
        -split-by  "$(eval echo  \$${table_name}_split_by)" \
        -where "$(eval echo  \$${table_name}_where)" \
        -columns "$(eval echo  \$${table_name}_columns)" \
        -fields-terminated-by '\t' \
        -null-string '\\N' \
        -null-non-string '\\N' \
        -verbose
	done
done

# 像按天增量,有些属性没用
#-delete-target-dir:存在目录则先删除【不用】
#--hive-overwrite:覆盖数据【不用】
#--split-by:根据某个字段进行分组,默认分成4份
#-hive-database:指定hive数据库
#--null-string '\\N' --null-non-string '\\N'  :默认将null 和非法字符转为  NULL,不然会成为’null’ 字符串
#-column:’id,name,pwd’ 指定导出的字段
#--warehouse-dir : 指定hive 导出的目录
$-where : 指定条件

 

 

    3.4 queue.sql

    

-- queue_all : hive 的数据库
-- queue : 对应数据库表
set hivevar:database=queue_all;
set hivevar:tablename=queue;
create database IF NOT EXISTS queue_all;
use queue_all;

-- 创建排队表
CREATE TABLE IF NOT EXISTS queue (
 `queue_id` STRING ,
 `entity_id` STRING,
 `create_time` BIGINT,
 `op_time` BIGINT,
)PARTITIONED BY(pt INT)
 ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
 ESCAPED BY '\001'
 LINES TERMINATED BY '\012' STORED AS TEXTFILE;

 -- 分区关联:将几个库的全部链接起来,相当于从一个库查询
alter table ${tablename} add if not exists partition(pt=1) location  "hdfs://master:9000/user/hive/warehouse/${tablename}.db/${tablename}1";
alter table ${tablename} add if not exists partition(pt=2) location  "hdfs://master:9000/user/hive/warehouse/${tablename}.db/${tablename}2";
alter table ${tablename} add if not exists partition(pt=3) location  "hdfs://master:9000/user/hive/warehouse/${tablename}.db/${tablename}3";
alter table ${tablename} add if not exists partition(pt=4) location  "hdfs://master:9000/user/hive/warehouse/${tablename}.db/${tablename}4";

 

 

 

四.小结:

     1.上面省略了很多配置,包括日志等信息

     2.只分享了个简单例子,基本上拿过去就能配置使用了,如果更复杂的 还是得看文档

     3.脚本不方便(我脚本弱),sqoop2 支持java,最好升级来用

     4.有错请提出,或者有更好的方式,请多建议,虽然mysql  可以直接像hadoop 导出,但是因为数据库很多种,就选了脚本 相对兼容的方式。

0
0
分享到:
评论

相关推荐

    实战Sqoop数据导入及大数据用户行为案例分析

    实战Sqoop数据导入及大数据用户行为案例分析(全套视频+代码+工具+课件讲义) 内容包括: 01_CDH版本框架的介绍 02_CDH版本框架的环境部署 03_Sqoop的介绍及其实现原理 04_Sqoop的安装部署及连接测试 05_Sqoop将...

    airflow_demo:使用Sqoop从Mysql向Hive导入增量数据的Airflow脚本

    使用Sqoop实现增量导入,并使用Airflow自动化该过程。 1)设定数据 我)在MySQL中创建表 CREATE TABLE `employee_profile&#96; ( &#96;profile_id` VARCHAR(255) NOT NULL, `first_name` VARCHAR(45) NULL, ...

    bdp2hive:生成hive分区表、sqoop导入数据至hive

    生成sqoop脚本组件主要通过传递的数据库信息查询数据库获取表字段与数据集之间的对照关系SQL语句,通过模板拼接成sqoop脚本,上传服务器执行;hive分区表生成组件主要是通过获取数据集及数据集item的code,数据集...

    java连接sqoop源码-sqoop-example:sqoop-示例

    中导入和导出数据。 大多数 sqoop 作业都是通过脚本编写的,这对于临时作业来说是可以的,但是当您想要自动化并将其置于持续集成路径中时,有时您需要一种编译语言以及这给您带来的好处。 我选择 scala 将我自己的...

    【63课时完整版】大数据实践HIVE详解及实战

    29.Sqoop将MySQL数据导入到HDFS(一) 30.Sqoop将MySQL数据导入到HDFS(二) 31.Sqoop中的增量导入与Sqoop job 32.Sqoop将MySQL数据导入Hive表中 33.Sqoop的导出及脚本中使用的方式 34.案例分析-动态分区的实现 35....

    BigData:Sqoop+Hive+MySQL 纽约证券交易所数据集

    在mysql中创建表,将NYSE数据导入MySQL Sqoop 将数据从mysql导入HIVE 操作hive中的数据来计算每个股票代码的股票量 将此数据存储到 hive 上的 stock_volume 表中 使用 sqoop 将此数据从 hive 导出回 mysql 进行...

    sqoop-service

    Sqoop 是一个很好的工具,用于在 HDFS 中导入和导出数据。 大多数 sqoop 作业都是通过脚本编写的,这对于临时作业来说是可以的,但是当您想要自动化并将其置于持续集成路径中时,有时您需要一种编译语言以及这给您...

    Hadoop硬实战 [(美)霍姆斯著][电子工业出版社][2015.01]_PDF电子书下载 带书签目录 高清完整版.rar )

    技术点9 使用Sqoop 将数据导入MySQL 2.3.3 Hbase 技术点10 将数据从HDFS 导入HBase 技术点11 使用HBase 作为MapReduce 的数据接收器 2.4 本章小结 3 数据序列化――处理文本文件及其他格式的文件 3.1 ...

    毕业设计-基于Hadoop平台开发的视频收视率分析源码+项目说明.zip

    将采集到的数据导入kafka中,使用Flume框架技术从kafka采集数据到Hdfs并将数据导入到Hive中,然后使用Hue操作Hive进行离线数据分析,最后利用sqoop导入mysql,整个流程采用azkaban进行脚本定时调度,达到系统需要具备的...

    Hadoop实战(第2版)

    2.2.4 HBase 技术点6 HBase 导入HDFS 技术点7 将HBase 作为MapReduce 的数据源2.3 将数据导出Hadoop 2.3.1 将数据导入本地文件系统技术点8 自动复制HDFS 中的文件2.3.2 数据库技术点9 使用Sqoop 将...

    基于Hadoop实现的视频收视率分析,毕设项目+源代码+文档说明

    将采集到的数据导入kafka中,使用Flume框架技术从kafka采集数据到Hdfs并将数据导入到Hive中,然后使用Hue操作Hive进行离线数据分析,最后利用sqoop导入mysql,整个流程采用azkaban进行脚本定时调度,达到系统需要具备的...

    Hadoop权威指南(中文版)2015上传.rar

    导入的数据与Hive 导入大对象 执行导出 深入了解导出 导出与事务 导出和SequenceFile 第16章 实例分析 Hadoop 在Last.fm的应用 Last.fm:社会音乐史上的革命 Hadoop a Last.fm 用Hadoop产生图表 Track Statistics...

    modelimport.zip

    自动从mysql导入数据到hive的脚本,通过sqoop工具,太多也写了不了了!

    大数据基础知识培训

    HDFS:类似Google GFS的分布式文件系统 MapRedce:并行计算架构,将计算任务拆分成大量可以独立运行的子...Sqoop:于在HADOOP与传统的数据库间进行数据的传递,方便从传统数据库导入数据到Hadoop数据集合(HDFS/Hive)

    Hadoop权威指南 第二版(中文版)

     导入的数据与Hive  导入大对象  执行导出  深入了解导出  导出与事务  导出和SequenceFile 第16章 实例分析  Hadoop 在Last.fm的应用  Last.fm:社会音乐史上的革命  Hadoop a Last.fm  用Hadoop产生图表...

    Increment_Backup_To_Hive:一个增量备份关系数据库(MySQL, PostgreSQL, SQL Server, SQLite, Oracle等)到hive的php脚本工具

    增量备份时,脚本主要根据表的自增主键来查询新增数据,然后把新增的数据按照hive表的格式导出成文本,最后调用hive命令直接把文本导入hive内部。支持压缩表+多分区+字段增减。环境脚本内部会调用hive命令,所以必须...

    尚gg大数据项目实战电商数仓系统开发教程.txt

    01_数仓项目介绍.avi4 b4 Q* Q8 Z0 Y) C6 O! w ...97_业务数仓_ODS层建表及数据导入.avi 98_业务数仓_DWD层建表及导入数据.avi 99_业务数仓_需求讲解.avi7 X6 q, I3 Y+ F: N8 h 源码笔记资料.rar0 W

    手把手教你搭建分布式Hadoop集群视频教程(视频+讲义+笔记+软件+配置)

    06_SQOOP安装及导入数据到HBase表 07_HBase Backup Masters配置、启动、测试 08_HBase 压缩配置测试 09_分布式集群搭建:大数据框架回顾说明 10_分布式集群搭建:集群环境说明及基本配置 11_分布式集群搭建:...

Global site tag (gtag.js) - Google Analytics