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メタストアにテーブルが存在するかどうかを確認する別の方法はありますか?
データブリックで以下を使用して、テーブルが存在するかどうかを確認しました。これでうまくいくと思います。
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")
ありがとう
ユバ
リストのような構造の作成を避ける別の提案:
if (spark.sql("show tables in <DATABASE>")
.filter(col("tableName") == "<TABLENAME>")
.count() > 0):
print('found')
else:
print('not found')