Sqoop接入shell脚本

3 篇文章 0 订阅
3 篇文章 0 订阅

Sqoop对mysql进行接入hive的shell脚本

1.表准备

-- mysql表

CREATE TABLE sc(

`sid` int ,

`cid` int ,

`gd` int

) COMMENT = 'sc'--  非分区表

CREATE TABLE src.src_sc (

`sid` int ,

`cid` int ,

`gd` int

) COMMENT 'sc'

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' STORED AS textfile;

--  分区表

drop table src.src_sc_d;

CREATE TABLE src.src_sc_d (

`sid` int ,

`cid` int ,

`gd` int

) COMMENT 'sc'

PARTITIONED BY (etl_date STRING COMMENT 'etl_日期')

ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001'

lines terminated by '\n'

STORED AS textfile;

2.shell脚本接入

2.1.非分区表接入脚本
#!/bin/bash

###########非分区表接入#############

#根据where条件可修改该字段,$1在本脚本的第一个参数获取

sid=$1

#sqoop的地址的bin/sqoop

sqoop_home=/opt/links/sqoop/bin/sqoop

#mysql的连接

connect=jdbc:mysql://hlm03:8021/bfd

#用户名

username=root

#密码

password=root

#接入的sql

sql="select sid,cid,gd from bfd.sc where sid <= $sid and \$CONDITIONS "

#hive数据库名

hive_database=src

#hive表名

hive_table=src_sc

#hive表的数据地址

target_dir=/user/hive/warehouse/src.db/src_sc

#行分割符

lines_terminated_by="\n"

#列分割符

fields_terminated_by="\001"

#map数(可修改加split-by)

num_mappers=1

import_data() {

$sqoop_home import \

--connect $connect \

--username $username \

--password $password \

--query "$sql" \

--hive-database $hive_database \

--hive-table $hive_table \

--null-string '\\N' \

--null-non-string '\\N' \

--num-mappers $num_mappers \

--target-dir $target_dir \

--lines-terminated-by "$lines_terminated_by" \

--fields-terminated-by "$fields_terminated_by" \

--hive-drop-import-delims \

--delete-target-dir

}

import_data

/opt/links/sqoop/bin/sqoop import \

--connect jdbc:mysql://hlm03:8021/bfd \

--username root \

--password root \

--query "select sid,cid,gd from bfd.sc where \$CONDITIONS and sid <= 4" \

--hive-database src \

--hive-table src_sc \

--null-string '\\N' \

--null-non-string '\\N' \

--num-mappers 1 \

--target-dir /user/hive/warehouse/src.db/src_sc \

--lines-terminated-by '\n' \

--fields-terminated-by "\001" \

--delete-target-dir
2.2.分区表接入脚本
#!/bin/bash

###########分区表接入#############

#根据where条件可修改该字段,$1在本脚本的第一个参数获取

sid=$1

etl_date=`date -d "1 day ago" +'%Y-%m-%d'`

#sqoop的地址的bin/sqoop

sqoop_home=/opt/links/sqoop/bin/sqoop

#mysql的连接

connect=jdbc:mysql://hlm03:8021/bfd

#用户名

username=root

#密码

password=root

#接入的sql

sql="select sid,cid,gd from bfd.sc where sid <= $sid and \$CONDITIONS "

#hive数据库名

hive_database=src

#hive表名

hive_table=src_sc_d

#分区字段

hive_partition_key=etl_date

#分区值

hive_partition_value=$etl_date

#hive表的数据地址

target_dir=/user/hive/warehouse/src.db/src_sc_d

#行分割符

lines_terminated_by="\n"

#列分割符

fields_terminated_by="\001"

#map数(可修改加split-by)

num_mappers=1

import_partition_data() {

$sqoop_home import \

--connect $connect \

--username $username \

--password $password \

--query "$sql" \

--target-dir $target_dir \

--delete-target-dir \

--hive-import \

--hive-overwrite \

--hive-database $hive_database \

--hive-table $hive_table \

--hive-partition-key $hive_partition_key \

--hive-partition-value $hive_partition_value \

--fields-terminated-by $fields_terminated_by \

-m $num_mappers

}

import_partition_data
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sqoop是一个用于在Hadoop和关系型数据库之间进行数据传输的工具。它可以将数据从关系型数据库导入到Hadoop集群中,也可以将数据从Hadoop集群导出到关系型数据库中。下面是一个Sqoop数据导入导出的shell脚本示例: 1. 数据导入脚本: ``` sqoop import \ --connect jdbc:mysql://localhost/mydatabase \ --username root \ --password password \ --table mytable \ --target-dir /user/hadoop/mydata \ --m 1 ``` 这个脚本将从MySQL数据库中的mytable表导入数据,并将数据存储在Hadoop集群中的/user/hadoop/mydata目录下。其中,--connect参数指定了数据库连接URL,--username和--password参数指定了数据库的用户名和密码,--table参数指定了要导入的表名,--target-dir参数指定了数据存储的目录,--m参数指定了并行度。 2. 数据导出脚本: ``` sqoop export \ --connect jdbc:mysql://localhost/mydatabase \ --username root \ --password password \ --table mytable \ --export-dir /user/hadoop/mydata \ --input-fields-terminated-by '\t' \ --input-lines-terminated-by '\n' ``` 这个脚本将从Hadoop集群中的/user/hadoop/mydata目录中读取数据,并将数据导出到MySQL数据库的mytable表中。其中,--connect参数指定了数据库连接URL,--username和--password参数指定了数据库的用户名和密码,--table参数指定了要导出的表名,--export-dir参数指定了数据读取的目录,--input-fields-terminated-by和--input-lines-terminated-by参数指定了输入数据的分隔符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值