web-dev-qa-db-ja.com

Hiveにテーブルが存在するかどうかを確認する方法は?

.NETアプリケーションからODBCドライバーを介してHiveに接続しています。テーブルが既に存在するかどうかを判断するクエリはありますか?

たとえば、MSSQLでは、INFORMATION_SCHEMAテーブルおよびNetezzaでは、_v_table テーブル。

どんな援助も大歓迎です。

15

次の2つの方法で確認できます。

1.)@dimamahが示唆したように、ここに1つのポイントを追加するために、このアプローチでは

 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.)2番目のアプローチは、HiveMetastoreClient APIを使用することです。APIを直接使用して、table_nameが特定のデータベースに存在するかどうかを確認できます か否か。

さらにサポートが必要な場合は、こちらをご覧ください Hive 11

10
Mukesh S

次のコマンドを実行します:show tables in DB like 'TABLENAME'
テーブルが存在する場合、その名前が返され、そうでない場合は何も返されません。
これはHiveから直接行われます。その他のオプションについては this をご覧ください。

DBは、テーブルが存在するかどうかを確認するデータベースです。
TABLENAMEは、求めるテーブル名です。

実際に行われるのは、Hiveが metastore (設定によって異なりますが、MySQLのような標準RDBMS内に存在する可能性がある)をクエリするため、オプションで同じメタストアに直接接続し、独自のクエリを作成して、テーブルが存在します。

14
dimamah

Spark SQLでHiveをプログラミングする場合、次のメソッドを使用してHiveテーブルが存在するかどうかを確認できます。

if (hiveContext.hql("SHOW TABLES LIKE '" + tableName + "'").count() == 1) {
    println(tableName + " exists")
}
12
Haimei

誰かが私のようなシェルスクリプトを使用している場合、私の答えは役に立つかもしれません。テーブルがデフォルトのネームスペースにあると仮定します。

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

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

4
Nicolas Castro

以下のようなコードは、私のSparkノートブックの多くで見つけることができます。

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

(読みやすくするために2ライナーを作成しました)

Spark=同じことを確認するためのAPI呼び出しが必要です。

3
Tagar

scala sparkアプリとSparkSQLを使用している場合、次のことができます。

if spark.catalog.tableExists("tablename") {do something}
0
Tim