瀏覽代碼

HUE-7240 [impala] Workaround non support of partition_spec in DESCRIBE FORMATTED

Romain Rigaux 8 年之前
父節點
當前提交
f253330b91
共有 2 個文件被更改,包括 13 次插入11 次删除
  1. 12 10
      apps/beeswax/src/beeswax/server/dbms.py
  2. 1 1
      apps/beeswax/src/beeswax/server/hive_server2_lib.py

+ 12 - 10
apps/beeswax/src/beeswax/server/dbms.py

@@ -261,8 +261,7 @@ class HiveServer2Dbms(object):
     return None
 
 
-  def alter_column(self, database, table_name, column_name, new_column_name, column_type, comment=None,
-                   partition_spec=None, cascade=False):
+  def alter_column(self, database, table_name, column_name, new_column_name, column_type, comment=None, partition_spec=None, cascade=False):
     hql = 'ALTER TABLE `%s`.`%s`' % (database, table_name)
 
     if partition_spec:
@@ -832,14 +831,17 @@ class HiveServer2Dbms(object):
 
 
   def get_partition(self, db_name, table_name, partition_spec, generate_ddl_only=False):
-    table = self.get_table(db_name, table_name)
-    partitions = self.get_partitions(db_name, table, partition_spec=partition_spec)
-
-    if len(partitions) != 1:
-      raise QueryServerException(_("Query did not return exactly one partition result: %s") % partitions)
-
-    partition = partitions[0]
-    partition_query = " AND ".join(partition.partition_spec.split(','))
+    if partition_spec and self.server_name == 'impala': # partition_spec not supported
+      partition_query = " AND ".join(partition_spec.split(','))
+    else:
+      table = self.get_table(db_name, table_name)
+      partitions = self.get_partitions(db_name, table, partition_spec=partition_spec)
+  
+      if len(partitions) != 1:
+        raise QueryServerException(_("Query did not return exactly one partition result: %s") % partitions)
+  
+      partition = partitions[0]
+      partition_query = " AND ".join(partition.partition_spec.split(','))
 
     hql = "SELECT * FROM `%s`.`%s` WHERE %s" % (db_name, table_name, partition_query)
 

+ 1 - 1
apps/beeswax/src/beeswax/server/hive_server2_lib.py

@@ -1012,7 +1012,7 @@ class HiveServerClient:
           partitions_formatted.append(['/'.join(['%s=%s' % (str(part[0]), str(part[1])) for part in zipped_parts if all(part)])])
 
         partitions = [PartitionValueCompatible(partition, table) for partition in partitions_formatted]
-      except Exception, e:
+      except Exception:
         raise ValueError(_('Failed to determine partition keys for Impala table: `%s`.`%s`') % (database, table_name))
     else:
       partitions = [PartitionValueCompatible(partition, table) for partition in partition_table.rows()]