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

z18hc3ub  于 2022-09-27  发布在  Hive
关注(0)|答案(12)|浏览(276)

我在创建配置单元数据库时遇到以下错误
失败:执行错误,从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*。jar、jline-.jar、antlr运行时。jar从hive-0.12.0/lib到hadoop-1.2./lib

ni65a41a

ni65a41a1#

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

确保正确指定了位置

ncecgwcz

ncecgwcz2#

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

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)
在e1d1e1中添加内容:

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

rsaldnfx3#

设置hive.metastore.schema。配置单元站点中的验证属性。xml设置为true,默认为false。
有关更多详细信息,请查看此link

pcrecxhr

pcrecxhr4#

出现此错误的原因是我们向外部配置单元表添加了一个新列设置hive.msck.path。验证=忽略;已修复配置单元查询,但Impala还有其他问题,可通过以下步骤解决:
执行
使元数据无效
后,Impala查询开始失败,返回错误:列的Parquet模式不兼容
Impala错误解决方案:设置PARQUET_FALLBACK_SCHEMA_RESOLUTION=名称
如果您正在使用Cloudera发行版,以下步骤将使更改永久化,您不必为每个会话设置选项。
Cloudera Manager->Clusters->Impala->Configuration->Impaal Daemon查询选项高级配置代码段(安全阀)
添加值:PARQUET_FALLBACK_SCHEMA_RESOLUTION=名称
注意:在Cloudera Manager中设置参数时,不要使用SET或分号

lg40wkob

lg40wkob5#

使用“hive--hiveconf-hive.root.logger=DEBUG,console”打开hive-cli,从那里启用日志和调试,在我的例子中,分区的camelcase名称写在hdfs上,我创建了hive表,其名称完全用小写。

zmeyuzjn

zmeyuzjn6#

亚马逊雅典娜

如果您是因为Amazon Athena错误而来到这里的,您可以在下面使用这一点。首先检查所有文件是否具有相同的架构:

If you run an ALTER TABLE ADD PARTITION (or MSCK REPAIR TABLE) statement and mistakenly specify a partition that already exists and an incorrect Amazon S3 location, zero byte placeholder files of the format partition_value_$folder$ are created in Amazon S3. You must remove these files manually.

我们删除了带有awscli的文件。

aws s3 rm s3://bucket/key/table/ --exclude="*" --include="*folder*" --recursive --dryrun

另请参阅包含一些额外步骤的docs

wgmfuz8q

wgmfuz8q7#

没有一个建议的解决方案对我有效。
我在表位置路径中发现了一个名为_$folder$的0B文件(在同一级别的分区中)。删除它使我可以运行e1d1e而没有问题。
此文件是从s3还原(回滚到以前的版本控制状态)合并而来的

rt4zxlrg

rt4zxlrg8#

我也面临同样的错误。在我的例子中,原因是在HDFS仓库中创建了一个同名目录。删除此目录后,它解决了我的问题。

zed5wv10

zed5wv109#

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

zynd9foi

zynd9foi10#

hive-e“msck repair table database.tablename”它将修复表的元存储模式;

9q78igpj

9q78igpj11#

要使用MSCK正确解决此问题
1.如果旧分区的路径不存在,请使用
ALTER TABLE dbname.tablename DROP PARTITION IF EXISTS (partition_column_name > 0);
1.运行MSCK修复命令
MSCK REPAIR TABLE dbname.tablename;
为什么需要步骤1,因为如果从文件系统(HDFS)中删除分区,MSCK Repair命令将出错,所以通过先从元存储中删除所有分区,然后与MSCK同步,可以正确添加所需的分区

guicsvcw

guicsvcw12#

当底层hdfs目录被新分区更新时,我遇到了类似的问题,因此hive元存储不同步。
使用以下两个步骤求解:
1.MSCK table table_name显示了所有分区不同步的内容。
1.MSCK REPAIR table table_name添加了缺少的分区。

相关问题