HIVE2:ERROR [main]: ql.Driver (:()) - FAILED: Execution Error, return code 1 from org.apache.hadoop.

在Hive2.1 on Tez环境下执行SQL时遇到Execution Error,返回码1,问题源于Tez任务无法连接到AM。日志显示因内存限制导致TezSession关闭。通过调整`yarn.scheduler.minimum-allocation-mb`为2048MB和`yarn.nodemanager.vmem-pmem-ratio`为2.1解决了问题。虽然将`yarn.nodemanager.vmem-pmem-ratio`调整到3.0未能解决问题,原因是YARN基于程序申请的内存和该比例计算虚拟内存,当超出实际可用虚拟内存时会报错。

在Hive2.1 on Tez环境中运行select count(*) from students;时,遇到

ERROR [main]: ql.Driver (:()) - FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tez.TezTask

查看hive日志,具体问题是:

2016-12-20T17:38:50,298 INFO  [Tez session start thread]: client.TezClient (:()) - Could not connect to AM, killing session via YARN, sessionName=HIVE-c6220a27-a8a5-4d55-a36d-a6d87bd8931c, applicationId=application_1482283108292_0001
2016-12-20T17:38:50,313 INFO  [Tez session start thread]: impl.YarnClientImpl (:()) - Killed application application_1482283108292_0001
2016-12-20T17:38:50,313 ERROR [Tez session start thread]: tez.TezSessionState (:()) - Failed to start Tez session
org.apache.tez.dag.api.SessionNotRunning: TezSession has already shutdown. Application application_1482283108292_0001 failed 2 times due to

Hive 执行过程中出现 `NullPointerException`(特别是在 `org.apache.hadoop.hive.ql.Driver` 中)通常与 Hive 的配置、表结构定义、查询语法或运行时上下文有关。以下是可能导致此类异常的常见原因及对应的解决方案。 ### 3.1 可能原因及解决方案 #### 3.1.1 Hive 表结构定义错误或缺失 当 Hive 表不存在、字段定义错误或分区信息不完整时,可能导致执行过程中出现 `NullPointerException`。需要确保表结构定义完整且与实际数据格式一致。 - **解决方案**:检查 Hive 表是否存在,并验证其结构定义是否正确。可以使用 `DESCRIBE TABLE` 或 `SHOW CREATE TABLE` 命令确认表结构。 - **验证示例命令**: ```sql DESCRIBE TABLE your_table_name; SHOW CREATE TABLE your_table_name; ``` #### 3.1.2 Hive 配置不完整或错误 某些情况下,Hive 配置参数缺失或配置错误会导致运行时异常,例如 `hive.metastore.uris` 配置错误、HiveServer2 连接问题等。 - **解决方案**:确保 Hive 配置文件(如 `hive-site.xml`)中的关键参数正确无误,尤其是与 Metastore 和执行引擎相关的配置。 - **关键配置示例**: ```xml <property> <name>hive.metastore.uris</name> <value>thrift://localhost:9083</value> </property> ``` #### 3.1.3 查询语句中引用了未定义的变量或字段 如果 SQL 查询中引用了不存在的字段或未正确初始化的变量,也可能导致 `NullPointerException`。 - **解决方案**:检查 SQL 查询语句,确保所有字段和变量均已正确定义且在作用域内可用。 - **验证示例代码**: ```sql SELECT non_existent_column FROM your_table_name; -- 此类语句可能引发异常 ``` #### 3.1.4 SerDe 或存储处理类配置错误 当使用自定义 SerDe 或存储处理类(如 `HBaseStorageHandler`)时,若配置不完整或属性缺失,可能导致运行时异常。 - **解决方案**:检查 `WITH SERDEPROPERTIES` 和 `TBLPROPERTIES` 是否完整,尤其是 `hbase.columns.mapping` 和 `hbase.table.name` 等关键属性[^2]。 - **示例修复语句**: ```sql CREATE TABLE hive_hbase_table1(ekey STRING, ename STRING, job STRING, sal DOUBLE) PARTITIONED BY(pt STRING) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ( "hbase.columns.mapping" = ":key,person:name,person:job,person:sal" ) TBLPROPERTIES ( "hbase.table.name" = "hbase_hive_table1", "hbase.mapred.output.outputtable" = "hbase_hive_table1" ); ``` #### 3.1.5 Hive JDBC 连接问题 在使用 Hive JDBC 时,如果用户权限配置不当或缺少必要的安全配置,可能会导致运行时异常,例如用户无法模拟匿名用户。 - **解决方案**:检查 HiveServer2 的安全配置,确保用户有权限执行相关操作,并配置正确的 Kerberos 或模拟设置[^3]。 - **示例配置调整**: ```xml <property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property> ``` #### 3.1.6 数据类型不匹配或隐式转换问题 Hive 在处理不同类型的数据时会进行隐式转换,但某些情况下(如 INT 转换为 SMALLINT)会导致异常。 - **解决方案**:在涉及不同类型数据操作时,使用 `CAST` 显式转换数据类型,避免隐式转换失败[^4]。 - **示例修复语句**: ```sql SELECT CAST(sal AS INT) FROM your_table_name; ``` ### 3.2 日志分析与调试建议 为更有效地排查 `NullPointerException`,建议查看 Hive 的执行日志,特别是 `hive.log` 文件中的堆栈信息,以定位异常发生的准确位置。 - **日志分析命令**: ```bash tail -n 100 /path/to/hive/logs/hive.log ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值