web-dev-qa-db-ja.com

Pysparkを使用してHiveメタストアにテーブルが存在するかどうかを確認する

Hiveメタストアにテーブルが存在するかどうかを確認しようとしています。存在しない場合は、テーブルを作成します。テーブルが存在する場合は、データを追加します。

以下のコードのスニペットがあります。

spark.catalog.setCurrentDatabase("db_name")
db_catalog = spark.catalog.listTables(dbName = 'table_name)
if any(table_name in row for row in db_catalog):
    add data
else:
    create table

ただし、エラーが発生します。

>>> ValueError: Some of types cannot be determined after inferring

Hiveメタストアで作成された他のデータベースのテーブルで同じエラーが発生するため、値エラーを解決できません。 Hiveメタストアにテーブルが存在するかどうかを確認する別の方法はありますか?

3
Cryssie

データブリックで以下を使用して、テーブルが存在するかどうかを確認しました。これでうまくいくと思います。

tblList = sqlContext.tableNames(<your db name>)
for tbl in tblList:
  if tbl == <table_name>:
    print("Table exists")
  else:
    print("Table doesnot exist, create the table")

ありがとう

ユバ

0
Yuva

リストのような構造の作成を避ける別の提案:

if (spark.sql("show tables in <DATABASE>")
         .filter(col("tableName") == "<TABLENAME>")
         .count() > 0):
    print('found')   
else:
    print('not found')
0
Marcel Flygare