Hive &引用;无法从空字符串创建路径";执行select查询时配置单元外部表出错

Hive &引用;无法从空字符串创建路径";执行select查询时配置单元外部表出错,hive,Hive,我已经在hive中创建了一个外部表,比如说employees。这个employees表有3个分区,比如国家、年龄和性别。对于这个外部表,我使用自己的自定义输入格式和serde实现。在对这个外部表执行select查询时,我得到以下异常 java.lang.RuntimeException:java.lang.IllegalArgumentException:无法从空字符串创建路径 位于org.apache.hadoop.hive.ql.exec.ExecMapper.map(ExecMapper.

我已经在hive中创建了一个外部表,比如说employees。这个employees表有3个分区,比如国家、年龄和性别。对于这个外部表,我使用自己的自定义输入格式和serde实现。在对这个外部表执行select查询时,我得到以下异常

java.lang.RuntimeException:java.lang.IllegalArgumentException:无法从空字符串创建路径 位于org.apache.hadoop.hive.ql.exec.ExecMapper.map(ExecMapper.java:161) 位于org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50) 位于org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358) 位于org.apache.hadoop.mapred.MapTask.run(MapTask.java:307) 位于org.apache.hadoop.mapred.Child.main(Child.java:170) 原因:java.lang.IllegalArgumentException:无法从空字符串创建路径 位于org.apache.hadoop.fs.Path.checkPathArg(Path.java:78) 在org.apache.hadoop.fs.Path.(Path.java:90) 位于org.apache.hadoop.hive.ql.exec.MapOperator.cleanUpInputFileChangedOp(MapOperator.java:482) 位于org.apache.hadoop.hive.ql.exec.Operator.cleanUpInputFileChanged(Operator.java:1372) 位于org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:509) 位于org.apache.hadoop.hive.ql.exec.ExecMapper.map(ExecMapper.java:143)

此外,我们还检查了serde实现中的“反序列化”方法在select查询的执行期间没有被调用,并且看起来它甚至在调用反序列化方法之前就失败了

你们有谁能帮忙吗?提前谢谢


-Sankar

以下是创建表hql。 创建外部表日志(id INT、类字符串、类型字符串、名称字符串、状态字符串、持续时间字符串、记录字符串、用户字符串、引用字符串、年龄字符串),并按(loc字符串、env字符串、小时字符串、grp字符串)分区行格式SERDE'com.main.hive.TxnSerDe'存储为INPUTFORMAT'com.main.hive.TxnInputFormat'OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'LOCATION'/tmp/logs'; 创建表之后,我更改了分区表,因为它是外部表。
如果不存在分区(loc='hx',env='prd',hour='201401020',grp='vertical')位置'hx/prd/201401020/vertical',则添加ALTER TABLE logs

您能展示一下您的创建表hql吗?