HIVE执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1

时间:2014-04-28 05:26:17

标签: hive

我在创建配置单元数据时遇到以下错误

  

失败:执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1。 COM / Facebook的/ fb303 / FacebookService $ IFACE

Hadoop version:**hadoop-1.2.1**

HIVE Version: **hive-0.12.0**

Hadoop路径:/home/hadoop_test/data/hadoop-1.2.1
蜂巢路径:/home/hadoop_test/data/hive-0.12.0

我已将hive-0.12.0 / lib中的hive * .jar,jline- .jar,antlr-runtime .jar复制到hadoop-1.2./lib

9 个答案:

答案 0 :(得分:10)

set hive.msck.path.validation=ignore;
MSCK REPAIR TABLE table_name;

确保正确指定位置

答案 1 :(得分:1)

将hive-site.xml中的hive.metastore.schema.verification属性设置为true,默认为false。

有关详细信息,请查看此link

答案 2 :(得分:0)

我遇到了同样的错误。在我的案例中,原因是在HDFS仓库中创建的具有相同名称的目录。删除此目录后,它解决了我的问题。

答案 3 :(得分:0)

这可能是因为您的metastore_db已被破坏。从metastore_db中删除.lck文件。

答案 4 :(得分:0)

hive -e" msck修复表database.tablename" 它将修复表的表Metastore模式;

答案 5 :(得分:0)

出现此错误的原因是我们在外部Hive表中添加了新列。 设置hive.msck.path.validation = ignore; 可以解决蜂巢查询,但是Impala还有其他问题,可以通过以下步骤解决:

完成使元数据无效后,Impala查询开始失败,并出现错误:列的Parquet模式不兼容

Impala错误解决方案:设置PARQUET_FALLBACK_SCHEMA_RESOLUTION =名称;

如果您使用Cloudera发行版,则以下步骤将使更改永久生效,而不必每次会话都设置选项。

Cloudera Manager->群集-> Impala->配置-> Impala守护程序查询选项高级配置代码段(安全阀)

添加值:PARQUET_FALLBACK_SCHEMA_RESOLUTION =名称

注意:在Cloudera Manager中设置参数时,请勿使用SET或分号

答案 6 :(得分:0)

通过以下方式,我解决了问题。

set hive.msck.repair.batch.size=1;
set hive.msck.path.validation=ignore;

如果无法设置该值,则会出现错误。Error: Error while processing statement: Cannot modify hive.msck.path.validation at runtime. It is not in list of params that are allowed to be modified at runtime (state=42000,code=1)

hive-site中添加内容:

key:
hive.security.authorization.sqlstd.confwhitelist.append
value:
hive\.msck\.path\.validation|hive\.msck\.repair\.batch\.size

enter image description here

答案 7 :(得分:0)

使用“ hive --hiveconf hive.root.logger = DEBUG,console”打开hive cli来启用日志并从那里调试,在我的情况下,将分区的驼峰名称写在hdfs上,我用它创建了hive表完全用小写字母命名。

答案 8 :(得分:-1)

当基础hdfs目录使用新分区进行更新时,我也遇到了类似的问题,因此配置单元metastore不同步。

使用以下两个步骤解决:

  1. MSCK表table_name 显示了所有分区不同步的情况。
  2. MSCK REPAIR表table_name 添加了丢失的分区。