1. mysql 创建表 t1 和 t2
t1 用于从 mysql 导入到 hive。
t2 用于从 hive 导出到 mysql
mysql -h localhost -u hive -p hive
use hive;
create table t1(c1 varchar(200));
insert into t1 values('abc');
create table t2(c1 varchar(200), c2 int);
2. 在 hive 中创建对应的表
create database hive;
create table t1(c1 string) stored as textfile;
create table t2(c1 string, c2 int) stored as textfile;
insert into t2 values("value1", 1);
3. 从 Mysql Import
export MYSQL_HOST=localhost
export MYSQL_PASSWORD
sqoop import --connect 'jdbc:mysql://${MYSQL_HOST}:3306/hive' --username hive --password "${MYSQL_PASSWORD}" --table t1 --fields-terminated-by ',' --hive-import --hive-table 'default.t1' --hive-overwrite -m 1
4. export 到 Mysql
export 时直接指定的 hdfs 上的路径文件,没有经过 hive metastore。
sqoop export --connect 'jdbc:mysql://bmr-master-f9bd295-2:3306/hive' --username hive --password '*Hive123' --table t2 --fields-terminated-by '\001' --export-dir 'hdfs://bmr-cluster/warehouse/tablespace/managed/hive/t2'
5. jar 冲突处理
如果和其他 jar 包有冲突,如方法找不到等,可以尝试把 hive 的 jar 包放在前面。在执行 import 和 export 之前,执行以下语句。
export HADOOP_CLASSPATH=/opt/bmr/hive/lib/*