hcatalog配置以及sqoop集成使用
1、环境变量配置
vim ~/.bashrc
export HCAT_HOME=/usr/hive/hcatalog
export PATH=$PATH:$HCAT_HOME/bin
2、查看hive版本下载对应的hive-hcatalog放在hcatalog目录下
查看hive版本
hive --version
Hive 2.3.6
我的hive版本是2.3.6,则在maven库下载对应的jar包
https://mvnrepository.com/artifact/org.apache.hive.hcatalog/hive-hcatalog-core/2.3.6
放在如下目录
/usr/hive/hcatalog/share/hcatalog/hive-hcatalog-core-2.3.6.jar
3、sqoop使用hcatalog进行导数
sqoop export \
-Dmapreduce.job.queuename=test \
-Dmapreduce.job.max.split.locations=2000 \
--mapreduce-job-name task_name \
--connect jdbc:mysql://ip:3306/test \
--username user_name \
--password paasword \
--table mysql_tablename \
--columns name,sex,year,date \
--hcatalog-database default \
--hcatalog-table hive_table_name \
--hcatalog-partition-keys date \
--hcatalog-partition-values 20210101\
--input-null-string null \
--input-null-non-string '\\N' \
-m 3
参数解析:
-Dmapreduce.job.queuename 任务运行队列
-Dmapreduce.job.max.split.locations 小文件合并大小
--mapreduce-job-name 任务运行名
--connect jdbc:mysql://ip:3306/test mysql链接url
--username mysql用户名
--password mysql用户密码
--table mysql表名
--columns 需要导出的字段列表
--hcatalog-database hive表所在库
--hcatalog-table hive表名
--hcatalog-partition-keys hive表分区字段
--hcatalog-partition-values hive表分区字段值
--input-null-string null 字符串空值转换
--input-null-non-string '\\N' 非字符串空值转换
-m 3 任务并发
4、遇到的问题:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hive/hcatalog/mapreduce/HCatOutputFormat
at org.apache.sqoop.tool.BaseSqoopTool.validateHCatalogOptions(BaseSqoopTool.java:1655)
at org.apache.sqoop.tool.ExportTool.validateOptions(ExportTool.java:381)
at org.apache.sqoop.Sqoop.run(Sqoop.java:137)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
at org.apache.sqoop.Sqoop.main(Sqoop.java:252)
Caused by: java.lang.ClassNotFoundException: org.apache.hive.hcatalog.mapreduce.HCatOutputFormat
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 8 more
原因:
因为hive没有集成hcatalog相关的jar包,需要自行下载,按照第2步下载好放在hcatalog对应的目录下就可以了。