大数据——sqoop操作mysql和hive导出导入数据

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为基础数据库

猜你喜欢

转载自blog.csdn.net/qq_28409193/article/details/113104315