执行选择查询时 Hive 外部表中" Can not create a Path from a null string"错误



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

java.lang.RuntimeException:java.lang.IollegalArgumentException:无法从空字符串创建Path网址:org.apache.hadop.hive.ql.exec.ExecMapper.map(ExecMapper.java:161)网址:org.apache.hadop.mapred.MapRunner.run(MapRunner.java:50)网址:org.apache.hadop.mapred.MapTask.runOldMapper(MapTask.java:358)网址:org.apache.hadop.mapred.MapTask.run(MapTask.java:307)网址:org.apache.hadop.mapred.Child.main(Child.java:170)由以下原因引起:java.lang.IollegalArgumentException:无法从空字符串创建Path网址:org.apache.hoop.fs.Path.checkPathArg(Path.java:78)网址:org.apache.hoop.fs.Path.(Path.java:90)网址:org.apache.hadop.hive.ql.exec.MapOperator.cleanUpInputFileChangedOp(MapOperator.java:482)网址:org.apache.hadop.hive.ql.exec.Operator.cleanUpInputFileChanged(Operator.java:1372)网址:org.apache.hadop.hive.ql.exec.MapOperator.proce(MapOperator.java:509)网址:org.apache.hadop.hive.ql.exec.ExecMapper.map(ExecMapper.java:143)

此外,请检查在执行选择查询期间,serde实现中的"反序列化"方法是否未被调用,并且即使在调用反序列化方法之前,它看起来也会失败。

你们有人能在这里帮忙吗?提前谢谢。

-Sankar

这是创建表hql。创建外部表格日志(id INT、类STRING、类型STRING、名称STRING、状态STRING、持续时间STRING、记录STRING、用户STRING、引用STRING、年龄STRING)PARTITIONED BY(loc STRING、env STRIN、小时STRING、grp STRING)ROW FORMAT SERDE.com.main.hive.TxnSerDe"存储为INPUTFORMAT"com.main.hhive.TxInputFormat"OUTPUTFORMAT"org.apache.hoop.hhive.ql.io.HiveIgnoreKeyTextOutputFormat"LOCATION'/tmp/logs';在创建了表之后,我已经为分区更改了表,因为它是外部表。ALTER TABLE logs ADD IF NOT EXISTS PARTITION(loc='x',env='prd',hour='2014010220',grp='vertical')LOCATION'hx/prd/2014010220/vertical';

最新更新