Sqoop导入数据到HIVE

网友投稿 350 2022-11-21

Sqoop导入数据到HIVE

第一步导入HDFS中,如果输出目录存在需要将输出目录从HDFS中删除。

第二步把数据迁移到hive中

案例一

默认输出到/user/root/下面,如果之前已经导入到HDFS,在导入前删除输出目录。

hadoop fs -rm -r /user/root/vehicle_name

执行以下命令:

sqoop import \--connect jdbc:mysql://10.7.86.173:3306/duanjc \--username duanjc \--password 123456 \--table vehicle_name \--hive-import --m 1

其本质:先将数据导入到 HDFS上的​​/user/root/vehicle_name​​这个目录下面,然后将这个目录下的数据通过load的形式导人到hive表中,这里还没有指明对应的hive上的表名,那么它就会用mysql库中的表名。HDFS中对应的目录也会被删除。

执行命令可能会出现:ERROR tool.ImportTool: Import failed: java.io.IOException: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveConf

这个报错,解决方法是将Hive安装路径lib目录中的hive-common-*.jar包拷贝到sqoop的lib目录下即可。参考连接​​bin]# hadoop fs -ls /user/root[root@master bin]#

HDFS并没有/user/root/vehicle_name这个目录。

查看Hive

hive> show tables;OKrecordsvehicle_nameTime taken: 0.133 seconds, Fetched: 2 row(s)hive> select * from vehicle_name;OK1 2 322 4 33 4 350d6394-e9qd-112eb-9c7a-030c2213e292 ca9er1102 c10250d6394-e9qd-11fb-9c7a-030c2213e292 ca9er1102 c10250d6394-e9qd-1beb-9c7a-030c2213e292 ca9er1102 c10250d6394-e9qd-1deb-9c7a-030c2213e292 ca9er1102 c10250d6394-e9qd-1f2eb-9c7a-030c2213e292 ca9er1102 c10250dd394-e9qd-112eb-9c7a-030c2213e292 ca9er1102 c10250f62f0e-e9fd-11eb-9c7a-000c2918e062 camera100 c10050f63607-e9fd-11eb-9c7a-000c2918e062 camera101 c10150f6394-e92d-112eb-9c7a-030c2218e062 camera102 c10250f6394-e9fd-112eb-9c7a-030c2218e062 camera102 c10250f6394-e9qd-112eb-9c7a-030c2213e292 ca9er1102 c10250f6394-e9qd-112eb-9c7a-030c2218e062 camer1102 c10250f6394-e9qd-112eb-9c7a-030c2218e262 camer1102 c10250f6394-e9qd-112eb-9c7a-030c2218e292 camer1102 c10250f6394d-e9fd-11eb-9c7a-000c2218e062 camera102 c10250f6394d-e9fd-11eb-9c7a-000c2918e062 camera102 c10250f6394d-e9fd-11eb-9c7a-030c2218e062 camera102 c10250f63b40-e9fd-11eb-9c7a-000c2918e062 camera103 c103Time taken: 0.446 seconds, Fetched: 21 row(s)

案例二

sqoop import \--connect jdbc:mysql://master:3306/duanjc \--username root \--password 123456 \--table vehicle_name \--target-dir /tmp/vehicle_name \--hive-table vehicle_name_test \--hive-import --m 1

如果加​​--fields-terminated-by "\t"​​表示字段分割符

其本质:先将数据导入到HDFS上的​​/tmp/vehicle_name​​​这个目录下面,然后将这个目录下的数据通过​​load data inpath '/tmp/vehicle_name' into table vehicle_name_test​​ 导入到hive表中,此时对应的数据目录被删除!

查看hive

hive> show tables;OKrecordsvehicle_namevehicle_name_testTime taken: 0.056 seconds, Fetched: 3 row(s)hive> select * from vehicle_name_test > ;OK1 2 322 4 33 4 350d6394-e9qd-112eb-9c7a-030c2213e292 ca9er1102 c10250d6394-e9qd-11fb-9c7a-030c2213e292 ca9er1102 c10250d6394-e9qd-1beb-9c7a-030c2213e292 ca9er1102 c10250d6394-e9qd-1deb-9c7a-030c2213e292 ca9er1102 c10250d6394-e9qd-1f2eb-9c7a-030c2213e292 ca9er1102 c10250dd394-e9qd-112eb-9c7a-030c2213e292 ca9er1102 c10250f62f0e-e9fd-11eb-9c7a-000c2918e062 camera100 c10050f63607-e9fd-11eb-9c7a-000c2918e062 camera101 c10150f6394-e92d-112eb-9c7a-030c2218e062 camera102 c10250f6394-e9fd-112eb-9c7a-030c2218e062 camera102 c10250f6394-e9qd-112eb-9c7a-030c2213e292 ca9er1102 c10250f6394-e9qd-112eb-9c7a-030c2218e062 camer1102 c10250f6394-e9qd-112eb-9c7a-030c2218e262 camer1102 c10250f6394-e9qd-112eb-9c7a-030c2218e292 camer1102 c10250f6394d-e9fd-11eb-9c7a-000c2218e062 camera102 c10250f6394d-e9fd-11eb-9c7a-000c2918e062 camera102 c10250f6394d-e9fd-11eb-9c7a-030c2218e062 camera102 c10250f63b40-e9fd-11eb-9c7a-000c2918e062 camera103 c103Time taken: 0.518 seconds, Fetched: 21 row(s)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ZENDURE发布A8PD Pro双USB-C 4口快充移动电源 总输出超100W
下一篇:关于SpringBoot单元测试(cobertura生成覆盖率报告)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~