美文网首页
Sqoop学习记录

Sqoop学习记录

作者: 我问你瓜保熟吗 | 来源:发表于2018-10-25 17:53 被阅读8次

安装:

下载链接:
wget http://mirrors.hust.edu.cn/apache/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz

配置sqoop:

cd /usr/local/sqoop/conf
mv sqoop-env-template.sh sqoop-env.sh

修改一下两行参数:
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop

配置环境变量:
vim /etc/profile
export SQOOP_HOME=/usr/local/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
source /etc/profile
验证:
sqoop help

下载mysql驱动:
下载链接:https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.47.tar.gz
解压出来,将mysql-connector-java-5.1.47.jar移动到 /usr/local/sqoop/lib

测试:

一、从mysql导入数据到hdfs:

1、创建一个mysql表:
导入的数据文件链接:https://github.com/bbengfort/hadoop-fundamentals/raw/master/data/avgprice_kwh_state.zip

use test;
create table average_price_by_state ( 
year int not null, 
state varchar(5) not null, 
sector varchar(255), 
residential decimal(10,2), 
commercial decimal(10,2), 
industrial decimal(10,2), 
transportation decimal(10,2), 
other decimal(10,2), 
total decimal(10,2)
); 

exit;
mycli -uroot -proot --local-infile=1

load data local infile 
'/root/avgprice_kwh_state.csv' 
into table average_price_by_state 
fields terminated by ',' 
lines terminated by '\n' ignore 1 lines;

2、导出到hdfs:
sqoop import \
--connect jdbc:mysql://10.112.1.71:3306/test \
--username root \
--password root \
--table average_price_by_state \
-m 1  \

--null-string '**' \
--fields-terminated-by ',' \
--target-dir '/sqoop.db'
--append \

解释:
--null-string 表示将数据库中表字段为NULL的用“**”代替
-m1 指定map任务数为1,所以hdfs中只会出现一个文件
--append 表示执行一次语句,则将这个库导出一次,可连续导出多次,默认执行多次也只导出一份
--target-dir 指定导出的hdfs的目录,默认与数据库名相同
默认情况下,数据库一条记录不同字段以逗号分隔,存到hdfs文件中

mysql_hdfs.jpg

二、从hdfs导入到mysql:

1、创建数据库表:
create table average_price_by_state_copy ( 
year int not null, 
state varchar(5) not null, 
sector varchar(255), 
residential decimal(10,2), 
commercial decimal(10,2), 
industrial decimal(10,2), 
transportation decimal(10,2), 
other decimal(10,2), 
total decimal(10,2)
) ; 

2、执行导入程序
sqoop export \
-D sqooop.export.records.per.statement=100 \
--connect jdbc:mysql://10.112.1.71:3306/test \
--username root \
--password root \
--table average_price_by_state_copy \
--fields-terminated-by ',' \
--export-dir "/sqoop.db" \
--batch \
--update-mode allowinsert;

解释:
sqooop.export.records.per.statement=100 表示批处理,100条数据提交一次;
--batch 表示使用批量导出
--update-key uid表示主键为uid
--update-mode 表示如何更新表中的数据

hdfs_mysql.jpg

相关文章

  • Sqoop学习记录

    安装: 下载链接:wget http://mirrors.hust.edu.cn/apache/sqoop/1.4...

  • sqoop抽数遇坑记

    介绍sqoop 使用sqoop 坑之记录 坑之填补

  • 【Sqoop】Sqoop 工具之 Sqoop-import

    全文内容来自:Sqoop工具模块之sqoop-import 一、常用命令列举 主要记录 import 命令。 二、...

  • Sqoop学习

    sqoop1和sqoop2的区别 sqoop1和sqoop2完全就是两个东西,互相不兼容,sqoop1版本从1.4...

  • 2.3sqoop只导入部分数据

    Apache Sqoop Cookbook 英文版-翻译学习!! Sqoop 主要命令 问题 不是导入整张表,需要...

  • 1.2 安装JDBC 驱动器

    Apache Sqoop Cookbook 英文版-翻译学习!! 问题 sqoop针对特定的数据库系统(MySql...

  • 1.4运行Sqoop

    Apache Sqoop Cookbook 英文版-翻译学习!! 问题 在已经成功的安装并配置了sqoop后,如何...

  • 2.2 sqoop指定目标路径

    Apache Sqoop Cookbook 英文版-翻译学习!! sqoop 主要的命令 问题 上一节使用的例子能...

  • 2.1sqoop从整张表中导入数据

    Apache Sqoop Cookbook 英文版-翻译学习!! Sqoop 主要的命令 在接下来的几节中,致力于...

  • 2.4sqoop密码保护

    Apache Sqoop Cookbook 英文版-翻译学习!! Sqoop 命令 问题 在命令行中输入数据库的密...

网友评论

      本文标题:Sqoop学习记录

      本文链接:https://www.haomeiwen.com/subject/layctqtx.html