使用sqoop在mysql和hive中导数

hive的数据导入mysql

通过Sqoop将Hive表数据导入到Mysql通常有两种情况。

第一种是将hive上某张表的全部数据导入到mysql对应的表中。

第二种是将hive上某张表中的部分数据导入到mysql对应的表中。

两种方式的区别在于第二种情况需要指定要导入数据的列名称。两种情况的导入方式分别如下:

1.全部导入

Sqoop export --connect  jdbc:mysql://127.0.0.1:3306/dbname  --username mysql(mysql用户名) --password 123456(密码) --table  student(mysql上的表) --hcatalog-database sopdm(hive上的schema) --hcatalog-table student(hive上的表)

2.部分导入

Sqoop export --connect  jdbc:mysql://127.0.0.1:3306/dbname  --username mysql(mysql用户名) --password 123456(密码) --table  student(mysql上的表) --columns "id,name,age"  --hcatalog-database sopdm(hive上的schema) --hcatalog-table student(hive上的表)
--------------------- 
作者:jun_life 
来源:CSDN 
原文:https://blog.csdn.net/jun_life/article/details/51671347 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

mysql的数据导入hive

//sqoop导入数据测试

## by coco
## 2014-11-21

1. 下载sqoop,本测试安装的hadoop-2.2.0。所以下载的sqoop为:
sqoop-1.4.5.bin__hadoop-2.0.4-alpha.tar.gz
下载地址为:
http://mirrors.cnnic.cn/apache/sqoop/1.4.5/

2. 下载后,解压缩,配置即可。
tar -zxvf sqoop-1.4.5.bin__hadoop-2.0.4-alpha.tar.gz -C /usr/local
cd /usr/local
ln -s /usr/local/sqoop-1.4.5.bin__hadoop-2.0.4-alpha/ sqoop

配置环境变量:
vim /etc/profile  添加如下信息:
export SQOOP_HOME=/usr/local/sqoop
export PATH=.:$JAVA_HOME/bin:$ZK_HOME/bin:$TOMCAT_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin:$HIVE_HOME/bin:$FLUME_HOME/bin:$SQOOP_HOME:/bin:$PATH

修改sqoop配置信息:
cd /usr/local/sqoop/conf
cp sqoop-env-template.sh sqoop-env.sh

vim sqoop-env.sh  修改如下配置信息:
export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop/share/hadoop/mapreduce
export HBASE_HOME=/usr/local/hbase
export HIVE_HOME=/usr/local/hive

source /etc/profile

3. 测试
sqoop不需要启动,通过测试与mysql的链接测试sqoop的可用性。
1. 测试与mysql的链接
[root@wwn97 ~]# /usr/local/sqoop/bin/sqoop list-databases --connect jdbc:mysql://192.168.8.97:3306  --username root --password 123456
Warning: /usr/local/sqoop/../hcatalog does not exist! HCatalog jobs will fail.
Please set $HCAT_HOME to the root of your HCatalog installation.
Warning: /usr/local/sqoop/../accumulo does not exist! Accumulo imports will fail.
Please set $ACCUMULO_HOME to the root of your Accumulo installation.
14/11/21 11:12:32 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5
14/11/21 11:12:32 WARN tool.BaseSqoopTool: Setting your password on the command-line is insecure. Consider using -P instead.
14/11/21 11:12:33 INFO manager.MySQLManager: Preparing to use a MySQL streaming resultset.
information_schema
cacti
cr_debug
db1
gcd_sup
hive
hive4
mysql
performance_schema
test
显示出数据库中的数据库信息。说明sqoop配置成功。

*****测试参考的文件:
http://blog.javachen.com/2014/08/04/import-data-to-hive-with-sqoop/

2. 测试把mysql表中的数据装载到hive中
sqoop import --connect jdbc:mysql://192.168.8.97:3306/db1?charset-utf8  --username root --password 123456 --table pd_info --columns "pid,cid" --hive-import --hive-table pid_cid

3. 测试把mysql中表的增量数据追加数据到hive中:
sqoop import --connect jdbc:mysql://192.168.8.97:3306/db1?charset-utf8  --username root --password 123456 --table pd_info --columns "pid,cid" --check-column pid --incremental append --last-value 165 --hive-import --hive-table pid_cid

4. 测试把mysql表中数据导入到hdfs中
[root@wwn97 ~]# hadoop dfs -mkdir /test
sqoop import --connect jdbc:mysql://192.168.8.97:3306/db1?charset-utf8  --username root --password 123456 --table pd_info --columns "pid,cid" --target-dir "/test/aa.txt"

//可以加条件
 sqoop import --connect jdbc:mysql://192.168.8.97:3306/db1?charset-utf8  --username root --password 123456 --table pd_info --columns "pid,cid"  --where "pid=3" --target-dir "/test/b.txt"

5. 测试把mysql表中的数据,创建到hive中对应的表
sqoop import --connect jdbc:mysql://192.168.8.97:3306/db1?charset-utf8  --username root --password 123456 --table pd_info --columns "pid,cid" --fields-terminated-by "\t" --lines-terminated-by "\n" --hive-import --create-hive-table --hive-table hive_tab 

6. 测试合并hdfs文件
sqoop merge --new-data /test/aa.txt --onto /test/b.txt --merge-key pid --target-dir /test/merged --jar-file /test/merged.jar --class-name merged 
注: 其中--class-name所指定的class名是对应于merged.jar中的merged类,而merged.jar是通过Codegen生成的。

--------------------- 
作者:wulantian 
来源:CSDN 
原文:https://blog.csdn.net/wulantian/article/details/52980274 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值