当前位置: 首页 > 知识库问答 >
问题:

无法使用配置单元查询结构字段(CDH 5.9.0)

车明贤
2023-03-14

我只是切换到CDH 5.9.0(一个全新的安装,而不是升级,在一个新的集群上)。我有一个这样的表(稍微复杂一点,但我也用这个例子复制了):

CREATE TABLE `products`(`header` struct<PCODE:string, PNAME:string>)
PARTITIONED BY (`IMPORT_DATE' string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
  'hdfs://myhost.com:8020/user/hive/warehouse/dbp/products'
TBLPROPERTIES ('transient_lastDdlTime'='1482160314')

如果我这样做:

SELECT header FROM products;

==>查询成功并返回所有产品头(JSON格式)

但如果我这么做了:

SELECT header.PCODE FROM products;
Error: java.lang.RuntimeException: Error in configuring object
                at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:109)
                at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:75)
                at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)
                at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:449)
                at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
                at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
                at java.security.AccessController.doPrivileged(Native Method)
                at javax.security.auth.Subject.doAs(Subject.java:422)
                at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
                at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.lang.reflect.InvocationTargetException
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:106)
                ... 9 more
Caused by: java.lang.RuntimeException: Error in configuring object
                at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:109)
                at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:75)
                at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)
                at org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java:38)
                ... 14 more
Caused by: java.lang.reflect.InvocationTargetException
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at org.apache.hadoop.util.ReflectionUtils.setJobConf(ReflectionUtils.java:106)
                ... 17 more
Caused by: java.lang.RuntimeException: Map operator initialization failed
                at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure(ExecMapper.java:147)
                ... 22 more
Caused by: java.lang.NullPointerException
                at org.apache.hadoop.hive.ql.exec.ExprNodeFieldEvaluator.initialize(ExprNodeFieldEvaluator.java:61)
                at org.apache.hadoop.hive.ql.exec.ExprNodeFieldEvaluator.initialize(ExprNodeFieldEvaluator.java:53)
                at org.apache.hadoop.hive.ql.exec.Operator.initEvaluators(Operator.java:954)
                at org.apache.hadoop.hive.ql.exec.Operator.initEvaluatorsAndReturnStruct(Operator.java:980)
                at org.apache.hadoop.hive.ql.exec.SelectOperator.initializeOp(SelectOperator.java:63)
                at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:385)
                at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:469)
                at org.apache.hadoop.hive.ql.exec.Operator.initializeChildren(Operator.java:425)
                at org.apache.hadoop.hive.ql.exec.TableScanOperator.initializeOp(TableScanOperator.java:193)
                at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:385)
                at org.apache.hadoop.hive.ql.exec.MapOperator.initializeOp(MapOperator.java:431)
                at org.apache.hadoop.hive.ql.exec.Operator.initialize(Operator.java:385)
                at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.configure(ExecMapper.java:126)
                ... 22 more

共有1个答案

米飞龙
2023-03-14

我将通过降低查询元素的大小写来解决这个问题。P.EX:

从Products中选择header.pcode;

 类似资料:
  • 当我运行以下配置单元命令时 hive-e‘选择msg,将(*)从表中计数为cnt,其中像“%abcd%”这样的msg按msg排序按cnt desc;’sed的/[\t]/,/g'>table.csv 失败:ParseException第1:89行无法识别表达式规范中“like”“%”“password”附近的输入 我知道在指定字符串“%abcd%”时有问题。该命令在配置单元环境中工作正常,但这里我

  • 我对这些技术的理解是否正确?

  • 为了提高配置单元查询的性能,有哪些优化参数 配置单元版本:-Hive 0.13.1-cdh5.2.1 配置单元查询:- 设置hive.exec.parallel=true; 您能建议任何其他设置,除了以上,以提高配置单元查询的性能,我正在使用的类型查询。

  • 我正在使用twitter cloudera示例创建一个表,虽然我已经成功地创建了表并获得了数据,但我遇到了一个问题。 我可以执行并返回数据,但当我进行更深入的操作(如)时,我会收到一个错误。 以下是错误和堆栈跟踪: hive>从tweets中选择计数(*);MapReduce作业总数=1启动作业1编译时确定的1个reduce任务中的1个:1为了更改还原器的平均负载(以字节为单位):set hive

  • 问题内容: 我有这样的数据结构: 是另一个结构。 然后,当我尝试在Users切片中添加一些新值时,如下所示: 我不断收到此错误: 还尝试在这里https://github.com/golang/go/issues/3117变通方法,像这样: 但是没有运气,仍然是完全相同的错误。 并且还尝试使用指针声明地图,因此:,仍然没有运气。 问题答案: 首先,对于这个问题,本文中的解决方案为什么在将值设置为结