J'essaie de vérifier si une table existe dans la métastore Hive sinon, créez la table. Et si la table existe, ajoutez des données.
J'ai un extrait du code ci-dessous:
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
Cependant, je reçois une erreur.
>>> ValueError: Some of types cannot be determined after inferring
Je ne parviens pas à résoudre l'erreur de valeur car j'obtiens les mêmes erreurs pour les tables d'autres bases de données créées dans la métastore Hive. Existe-t-il un autre moyen de vérifier si la table existe dans la métastore Hive?
Nous avons utilisé ce qui suit dans les databricks pour vérifier si une table existe, cela devrait fonctionner, je suppose.
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")
Merci
Yuva
Une autre suggestion évitant de créer une structure de type liste:
if (spark.sql("show tables in <DATABASE>")
.filter(col("tableName") == "<TABLENAME>")
.count() > 0):
print('found')
else:
print('not found')