web-dev-qa-db-fra.com

Vérifier si la table existe dans la métastore Hive à l'aide de Pyspark

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?

3
Cryssie

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

0
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')
0
Marcel Flygare