【问题记录关于集成开发Presto】
测试环境:Hive3.1.0 HDP3 Presto0.22【这套环境没有问题】
生产环境:Hive3.0 Presto0.22【这套环境存在问题】
期间问题出现很多,大多都是通过原理角度去考虑分析问题,慢慢的排除从而找到具体原因,这次也不然,由于在Presto能查询到Hive的外部表数据等信息却查询不到内部表的数据信息(除了表名能查到之外其他都查不到),但是马上就想到了内外部表的存储位置以及用户权限问题,分析如下:
一:权限问题
先查看了生产环境下的Hive内外部表在HDFS上的存储路径,发现/xx/xx/managed/hive(内部表)的权限为drwxr-x—,而/xx/xx/external/hive(外部表)的权限为drwxrwxrwx,所属的用户及用户组分别是hive用户和Hadoop用户组,然后去查询Presto的指定用户是什么---->hive用户。
纳闷了,抱以一种怀疑的态度去想是不是Presto使用Presto进程的OS用户访问HDFS,导致使用了其他用户组用户访问内部表,从而权限不够引起的问题。后面将/xx/xx/managed/hive(内部表)的权限修改为drwxr-xr-x,测试,发现问题依然没有解决,报错信息:Your client does not appear to support insert-only tables.To skip capability checks, please set metastore.client.capability.check to false. This setting can be set globally, or on the client for the current metastore session. Note that this may lead to incorrect results, data loss, undefined behavior, etc. if your client is act