在雅典娜HIVE_CURSOR_ERROR当读表

当你试图读取一个表在雅典娜,select查询返回HIVE_CURSOR_ERROR消息。

写的annapurna.hiriyur

去年发表在:2022年5月10日

问题

你创建一个外部表在雅典娜和集成与三角洲湖使用中的指令转眼间,雅典娜三角洲湖集成文档。

雅典娜的外部表中定义Apache蜂巢metastore。

你运行一个select查询外部表从雅典娜查询编辑器,它返回一个HIVE_CURSOR_ERROR

HIVE_CURSOR_ERROR:不能读值在块0 0文件s3: / / < parquet-file-path >

导致

问题的根源是蜂巢中使用的不同的镶花约定和Apache火花。

在火花1.4或以上,使用当前的拼花格式,和十进制值被编写为整数。在早期版本的镶花格式,十进制值写在Apache的固定长度的字节数组的格式。这个镶花格式使用其他Apache系统如蜂巢和Apache黑斑羚。

结果,您就会收到一个错误的内部表示数据类型不同的是由于使用两个拼花格式。

解决方案

如果您使用的是雅典娜或很快访问三角洲湖管理表、镶花的文件必须创建的格式兼容蜂巢。

你不能选择在蜂巢的镶花大会,但可以与火花。

设置spark.conf.set (“spark.sql.parquet.writeLegacyFormat”,真的)房地产在集群级别或在笔记本上解决这个问题。

在集群级别设置属性:

  1. 编辑集群属性。
  2. 点击高级选项
  3. 选择火花
  4. 输入的属性设置火花配置字段。
  5. 确认更改。
  6. 重新启动集群。
删除

信息

改变表的DDL与火花数据类型不返回任何查询结果。spark.conf.set (“spark.sql.parquet.writeLegacyFormat”,真的)必须设置。

请检查剧场正厅座位配置文档的更多信息。



这篇文章有用吗?