Как проверить, существует ли таблица в Hive?

Я подключаюсь к Hive через драйвер ODBC из приложения .NET. Есть ли запрос, чтобы определить, существует ли таблица?

Например, в MSSQL вы можете запросить таблицу INFORMATION_SCHEMA, а в Netezza вы можете запросить таблицу _v_table.

Любая помощь будет оценена.

Ответ 1

Существует два подхода, по которым вы можете проверить, что:

1.) Как предложил @dimamah, просто чтобы добавить одну точку здесь, для этого подхода вам нужно

 1.1) start the **hiveserver** before running the query
 1.2) you have to run two queries
      1.2.1) USE <database_name>
      1.2.2) SHOW TABLES LIKE 'table_name'
      1.2.3) Then you check your result using Result set.

2.) Второй подход заключается в использовании API HiveMetastoreClient, где вы можете напрямую использовать API для проверки наличия table_name в конкретной базе данных или нет.

Для получения дополнительной помощи пройдите через Hive 11

Ответ 2

При программировании на Hive by Spark SQL вы можете использовать следующий метод, чтобы проверить, существует ли таблица Hive.

if (hiveContext.hql("SHOW TABLES LIKE '" + tableName + "'").collect().length == 1) {

println(tableName + " exists")

}

Ответ 3

Выполните следующую команду: show tables in DB like 'TABLENAME'
Если таблица существует, ее имя будет возвращено, иначе ничего не будет возвращено.
Это делается непосредственно из улья. для получения дополнительных опций см. this.

DB - это база данных, в которой вы хотите увидеть, существует ли таблица.
TABLENAME - имя таблицы, которое вы ищете,

Что на самом деле происходит, так это то, что Hive запрашивает metastore (зависит от вашей конфигурации, но может быть в стандартной RDBMS, такой как MySQL), поэтому вы можете возможно, напрямую подключиться к одному и тому же метасторе и написать собственный запрос, чтобы увидеть, существует ли таблица.

Ответ 4

Если кто-то использует оболочку script, как я, тогда мой ответ может быть полезен. Предположим, что ваша таблица находится в пространстве имен по умолчанию.

table=your_hive_table
validateTable=$(hive --database default -e "SHOW TABLES LIKE '$table'")
if [[ -z $validateTable ]]; then
  echo "Error:: $table cannot be found"
  exit 1
fi

Ответ 5

Код, аналогичный приведенному ниже, можно найти во многих моих ноутбуках Spark:

stg_table_exists = sqlCtx.sql("SHOW TABLES IN "+ stg_db) 
                  .filter("tableName='%s'" % stg_tab_name) .collect()

(сделана двухстрочная линия для удобочитаемости)

Я хочу, чтобы у Spark был API-запрос, чтобы проверить его.