Сравнить столбцы таблицы Hive со списком значений в другом поле таблицы? - PullRequest
0 голосов
/ 19 марта 2019

Может показаться странным, но мне нужно сравнить список имен таблиц и столбцов, хранящихся в таблице кустов, со столбцами фактических таблиц и получить результат сравнения. Запрашивать улей metastore не возможно для меня. Похоже, экспорт 'show columns in db.tbl' в файл и сравнение его с таблицей поиска возможны, но я смотрю, можно ли добиться результата, используя только запрос улья. Есть идеи?

Пример таблицы поиска схемы улья:

+----------+-----------+-----------------------------+------------------+
| tbl_name | col_name  | type                        | desc             |
+----------+-----------+-----------------------------+------------------+
| mario    | issue_id  | timestamp without time zone | blank            |
+----------+-----------+-----------------------------+------------------+
| mario    | create_id | bigint                      | dob              |
+----------+-----------+-----------------------------+------------------+
| mario    | status    | bigint                      | some info        |
+----------+-----------+-----------------------------+------------------+
| mario    | location  | bigint                      | some other info  |
+----------+-----------+-----------------------------+------------------+
| luigi    | issue_id  | character varying(65535)    | some more info   |
+----------+-----------+-----------------------------+------------------+
| luigi    | cust_id   | bigint                      | enough info here |
+----------+-----------+-----------------------------+------------------+
| yoshi    | status    | int                         | blank            |
+----------+-----------+-----------------------------+------------------+
| yoshi    | property  | int                         | blank            |
+----------+-----------+-----------------------------+------------------+

примеры таблиц с именами столбцов-

mario:              luigi:              yoshi:
issue_id            issue_id            status
create_id           cust_id 
status      
health      
quality 

Я ищу вывод, который даст флаг существует / не существует для каждого col_name в таблице поиска. (обратите внимание, что в реальных таблицах могут быть столбцы, которые могут отсутствовать при поиске, но мы можем игнорировать это)

Итак, ожидаемый результат примерно такой:

+----------+-----------+-----------------------------+------------------+--------------+
| tbl_name | col_name  | type                        | desc             | presence     |
+----------+-----------+-----------------------------+------------------+--------------+
| mario    | issue_id  | timestamp without time zone | blank            | exists       |
+----------+-----------+-----------------------------+------------------+--------------+
| mario    | create_id | bigint                      | dob              | exists       |
+----------+-----------+-----------------------------+------------------+--------------+
| mario    | status    | bigint                      | some info        | exists       |
+----------+-----------+-----------------------------+------------------+--------------+
| mario    | location  | bigint                      | some other info  | do not exist |
+----------+-----------+-----------------------------+------------------+--------------+
| luigi    | issue_id  | character varying(65535)    | some more info   | exists       |
+----------+-----------+-----------------------------+------------------+--------------+
| luigi    | cust_id   | bigint                      | enough info here | exists       |
+----------+-----------+-----------------------------+------------------+--------------+
| yoshi    | status    | int                         | blank            | exists       |
+----------+-----------+-----------------------------+------------------+--------------+
| yoshi    | property  | int                         | blank            | do not exist |
+----------+-----------+-----------------------------+------------------+--------------+    

ОБНОВЛЕНИЕ: в конечном итоге я прошел более длинный путь, извлек список существующих столбцов таблицы с помощью цикла в файл и затем загрузил во внешнюю таблицу. (если кто-то пытается добиться того же)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...