我正在尝试使用sqoop将数据从Oracle导入到Hive 我使用下面的命令一次,现在我想用新数据覆盖现有数据(Daily Action) 我又跑了这个命令。
sqoop import --connect jdbc:oracle:thin:@UK01WRS6014:2184:WWSYOIT1
--username HIVE --password hive --table OIDS.ALLOCATION_SESSION_DIMN
--hive-overwrite --hive-database OI_DB --hive-table ALLOCATION_SESSION_DIMN
但我收到错误文件已经存在:
14/10/14 07:43:59 ERROR security.UserGroupInformation:
PriviledgedActionException as:axchat
(auth:SIMPLE) cause:org.apache.hadoop.mapred.FileAlreadyExistsException:
Output directory
hdfs://uslibeiadg004.aceina.com:8020/user/axchat/OIDS.ALLOCATION_SESSION_DIMN
already exists
我在hive中创建的表都是外部表。 像mapreduce一样,每次执行相同的命令时我们都必须删除该文件吗?
任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
当您从EXTERNAL
表中删除时,您只删除Hive Metastore中的对象:您不会删除叠加该表的文件。非外部表属于Hive,并且在删除时会导致Metoreore- AND HDFS数据被删除。
因此,您可以尝试显式删除HDFS数据,也可以将表定义为hive内部。