Quellcode durchsuchen

fix: hive读取表结构

Zhang Li vor 2 Jahren
Ursprung
Commit
a328f6a67f
2 geänderte Dateien mit 28 neuen und 8 gelöschten Zeilen
  1. 23 8
      app/core/datasource/hive.py
  2. 5 0
      docker/java/Dockerfile.java

+ 23 - 8
app/core/datasource/hive.py

@@ -74,14 +74,29 @@ class HiveDS(DataSourceBase):
 
     def get_table_schema(self, table_name):
         logger.info(self.database_name)
-        sql = f'describe {self.database_name}.{table_name}'
-        res = self._execute_sql([sql])
+        sql1 = f'show columns in {self.database_name}.{table_name}'
+        res = self._execute_sql([sql1])
         if res:
-            print(res[0])
-            res = [[str(i) , *x]for i, x in enumerate(filter(lambda x: x[0] != '', res[0]))]
-            logger.info(res)
-            return flat_map(lambda x: [':'.join(x[:3])], res)
+            logger.info(res[0])
+            columns = list(map(lambda x: x[0],res[0]))
+            logger.info(columns)
         else:
-            raise Exception('table not found')
-
+            raise Exception(f'{table_name} no columns')
+        ans = []
+        for col in columns:
+            sql = f'describe {self.database_name}.{table_name} {col}'
+            try:
+                res = self._execute_sql([sql])
+                if res:
+                        print(res[0])
+                        res = [[str(i) , *x]for i, x in enumerate(filter(lambda x: x[0] != '', res[0]))]
+                        logger.info(res[1:3])
+                        ans.append(flat_map(lambda x: [':'.join(x[:3])], res))
+
+                else:
+                    raise Exception('table not found')
+            except Exception:
+                return ans
+
+        return ans
 

+ 5 - 0
docker/java/Dockerfile.java

@@ -0,0 +1,5 @@
+FROM maven:3.8.6-openjdk-8 as builder
+
+WORKDIR /workspace
+RUN sed -i "s@http://\(deb\|security\).debian.org@https://mirrors.aliyun.com@g" /etc/apt/sources.list
+