1.sqoop安装
(1)下载CDH版本的sqoop
(2)解压并进行环境配置
环境变量为:
export SQOOP_HOME=/home/sqoop-1.4.6-cdh5.15.1
export PATH=$PATH:$SQOOP_HOME/bin
在sqoop安装目录/conf/下:
#新建sqoop-env.sh文件
cp sqoop-env-template.sh sqoop-env.sh#增加环境变量
1、hadoop_home
2、hive_home
3、hbase_home
(3)启动测试
sqoop help
并连接测试
sqoop list-databases --connect jdbc:mysql://IP地址/数据库--username 数据库的用户名 --password 数据库密码
2.利用sqoop将mysql数据导入hdfs
sqoop import --connect jdbc:mysql://IP地址/数据库 --username 数据库用户名 --password 数据库密码 --table 表名 --driver com.mysql.jdbc.Driver (驱动)
成功界面:
存在的错误:
(1)提示java.lang.ClassNotFoundException: Class QueryResult not found
进入临时文件夹,
将jar包放在sqoop安装目录/lib下。
(2)提示org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://192.168.99.250:9000/user/root/employees already exists
在hdfs里边把文件删除就行,命令:hadoop dfs -rmr /文件夹路径
(3)出现以下错误,是缺少java-json.jar,放在sqoop安装目录/lib下
3.利用sqoop将mysql数据导入hive
sqoop import --connect jdbc:mysql://192.168.99.16/test --username root --password root --table employees --hive-import --hive-table employees --driver com.mysql.jdbc.Driver
(1)新建表
成功!
查询hive:
(1)出现ERROR hive.HiveConfig: Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.
往/etc/profile最后加入 export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
然后刷新配置,source /etc/profile
4.利用sqoop将Hadoop数据导入mysql
(1)将本地数据上传到hdfs
(2)执行命令
sqoop export --connect jdbc:mysql://192.168.99.16/test --username root --password root --table employees_s --export-dir edata --columns first_name,salary,dept --driver com.mysql.jdbc.Driver --input-fields-terminated-by '\001' --input-null-string '\n' --input-null-non-string '\n'
错误原因:
字段不一致,编码不一致,改为utf-8。
5.利用sqoop将Hive数据导入mysql
(1)查看hive表在hdfs的保存路径
(2)导出
sqoop export --connect jdbc:mysql://192.168.99.16/test --username root --password root --table employees_s --export-dir /user/hive/warehouse/employees --driver com.mysql.jdbc.Driver --input-fields-terminated-by '\001' --input-null-string '\n' --input-null-non-string '\n'
需注意字段类型问题!
6.hive连接oracle为基础库
更改hive-site.xml的文件内容:
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:oracle:thin:@IP地址:端口号:实例名</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>oracle.jdbc.OracleDriver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>username</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
</property></configuration>
重启hive服务
hive --service metastore &
7.hive连接Hbase为基础数据库