Как проверить, существует ли таблица в 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-запрос, чтобы проверить его.
Ответ 6
Если вы используете SparkSQL, вы можете сделать следующее.
if "table_name" in sqlContext.tableNames("db_name"):
...do something
http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.SQLContext.tableNames