sqoop mysql2hive
a./etc/profile添加export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
b.将hive-site.xml 拷贝到 $SQOOP_HOME/conf目录下(否则报错找不到hive库)
--connect #关系型数据库连接 --username #关系型数据库连接用户名 --password #关系型数据库连接密码 --table #关系型数据库的表 --split-by #如果-m的数量不为1,则一定要加上该参数且最好是数值类型,否则会报错 --direct #快速模式,使用mysql自带的mysqldump导出数据 --delete-target-dir #如果hdfs的目录已经存在则先删除 --target-dir #导入到hdfs时的目标目录 --export-dir #从hdfs导出时的源目录 --fields-terminated-by #导入到hdfs时的hdfs文件分隔符 --input-fields-terminated-by #从hdfs导出时的hdfs文件分隔符 --hive-drop-import-delims #导入hive中的数据某列中如果有换行符或回车键可以删除 --hive-database #hive的数据库 --hive-table #hive的表 --hive-overwrite #覆盖之前的分区插入数据 --hive-partition-key #hive分区字段 --hive-partition-value #hive分区值 -m #指定map数量,也是生成的文件数
特别说明:如果指定的map的数量不为1,则一定要加上–split-by参数且最好是数值类型
sqoop import \ --connect "jdbc:mysql://deptest75:3306/test_data?useUnicode=true&characterEncoding=utf8" \ --username root \ --password 1q2w3e4r \ --table mysql_stu_info \ --delete-target-dir \ --hive-drop-import-delims \ --hive-import \ --hive-overwrite \ --hive-database test_data \ --hive-table stu_info \ --hive-partition-key ymday \ --hive-partition-value 20190329 \ --split-by age \ --fields-terminated-by '\t' \ -m 6
这里记住一点,导入hive分区表时,sqoop会把结果存在hdfs的一个临时文件中,如果table是mysql_stu_info,执行用户是hadoop则先将数据写入 hdfs的/user/hadoop/mysql_stu_info文件中
在后面执行 LOAD DATA INPATH 'hdfs://emr-cluster/user/hadoop/mysql_stu_info' OVERWRITE INTO TABLE `default.mysql_stu_info` PARTITION (ymday='20190329')
这里就需要注意同表不同库的冲突问题了
浙公网安备 33010602011771号