Hadoop Sqoop创建配置单元表错误-运行创建表作业时遇到IOException

Hadoop Sqoop创建配置单元表错误-运行创建表作业时遇到IOException,hadoop,hive,centos7,sqoop,Hadoop,Hive,Centos7,Sqoop,我正在Centos7机器上运行sqoop,该机器已经安装了hadoop/mapreduce和hive。我从一个教程中读到,当将数据从RDBMS(在我的例子中是SQL Server)导入HDFS时,我需要运行以下命令: sqoop import -Dorg.apache.sqoop.splitter.allow_text_splitter=true --connect 'jdbc:sqlserver://hostname;database=databasename' --username adm

我正在Centos7机器上运行sqoop,该机器已经安装了
hadoop/map
reduce和hive。我从一个教程中读到,当将数据从RDBMS(在我的例子中是SQL Server)导入HDFS时,我需要运行以下命令:

sqoop import -Dorg.apache.sqoop.splitter.allow_text_splitter=true  --connect 'jdbc:sqlserver://hostname;database=databasename' --username admin --password admin123  --table tableA
这一步一切都很完美。下一步是创建一个与RDBMS(在我的例子中是SQL Server)结构相同的配置单元表,并使用sqoop命令:

sqoop create-hive-table --connect 'jdbc:sqlserver://hostname;database=databasename' --username admin --password admin123  --table tableA --hivetable hivetablename --fields-terminated-by ','
但是,每当我运行上述命令时,就会出现下一个
错误

FAILED: Execution Error, return code 1 from      
org.apache.hadoop.hive.ql.exec.DDLTask. 
com.fasterxml.jackson.databind.ObjectMapper.readerFor(Ljava/lang
/Class;)Lcom/fasterxml/jackson/databind/ObjectReader;
18/04/01 19:37:52 ERROR ql.Driver: FAILED: Execution Error, return code 1   
from org.apache.hadoop.hive.ql.exec.DDLTask. 
com.fasterxml.jackson.databind.ObjectMapper.readerFor(Ljava/lang
/Class;)Lcom/fasterxml/jackson/databind/ObjectReader;
18/04/01 19:37:52 INFO ql.Driver: Completed executing  
command(queryId=hadoop_20180401193745_1f3cf07d-ca16-40dd-
8f8d-1e426ecd5860); Time taken: 0.212 seconds
18/04/01 19:37:52 INFO conf.HiveConf: Using the default value passed in 
for log id: 0813b5c9-f374-4920-b8c6-b8541449a6eb
18/04/01 19:37:52 INFO session.SessionState: Resetting thread name to     
main
18/04/01 19:37:52 INFO conf.HiveConf: Using the default value passed in 
for log id: 0813b5c9-f374-4920-b8c6-b8541449a6eb
18/04/01 19:37:52 INFO session.SessionState: Deleted directory: /tmp/hive
/hadoop/0813b5c9-f374-4920-b8c6-b8541449a6eb on fs with scheme hdfs
18/04/01 19:37:52 INFO session.SessionState: Deleted directory: /tmp/hive  
/java/hadoop/0813b5c9-f374-4920-b8c6-b8541449a6eb on fs with scheme file
18/04/01 19:37:52 ERROR tool.CreateHiveTableTool: Encountered IOException 
running create table job: java.io.IOException: Hive CliDriver exited with 
status=1

我不是java专家,但我想知道您是否知道这个结果?

您可以将整个过程放在一个语句中,从sql server获取数据,然后创建一个配置单元表,而不是编写两个不同的语句

sqoop import -Dorg.apache.sqoop.splitter.allow_text_splitter=true --connect 'jdbc:sqlserver://hostname;database=databasename' --username admin --password admin123 --table tableA --hive-import --hive-overwrite --hive-table hivetablename --fields-terminated-by ',' --hive-drop-import-delims --null-string '\\N' --null-non-string '\\N'

我也面临着同样的问题,我已经将我的蜂巢降级到1.2.2,它可以正常工作。这将解决问题


但不确定是否只想在hive2上使用Sqoop。

我也遇到了同样的问题。我的sqoop版本(1.4.7)和hive版本(2.3.4)之间似乎存在一些兼容性问题。
$SQOOP_HOME/lib中jackson-*jar文件的版本引发了这个问题:有些文件对于hive来说太旧了,因为我们需要2.6以上的版本

我找到的解决方案是将$SQOOP_HOME/lib中的以下文件替换为$HIVE_HOME/lib中的对应文件:

  • jackson core-*.jar
  • jackson数据绑定-*.jar
  • jackson注释-*.jar

它们都来自2.6+版本,这似乎很有效。但不确定这是否是一种好的做法。

有关此内容,请检查jackson core、jackson数据绑定和jackson注释jar。jar应该是最新版本的。通常是由于旧版本。将这些jar放在配置单元库和sqoop库中。除此之外,请检查hive和hbase中的libthrift jar,它应该是相同的,并在sqoop lib中复制相同的内容

请使用格式化工具正确编辑和格式化您的问题/答案。句子中的代码要格式化为
code
非常重要的单词要加粗,不太重要的单词要斜体,必要时还可以使用列表查看HiveServer2日志。执行create hive table命令时是否看到任何异常?嗨,朋友!尽管运行了命令行,我还是得到了前面提到的相同错误。尽管如此,我还是能够通过以下几行:18/04/01 21:26:27信息mapreduce。作业:map 0%reduce 0%18/04/01 21:26:37信息mapreduce。作业:map 25%reduce 0%18/04/01 21:26:41信息mapreduce。作业:map 100%reduce 0%问题。任何进一步的帮助都将不胜感激。我也有同样的问题并被降级。现在效果很好。