web-dev-qa-db-fra.com

Azure Databricks - Impossible de créer la table gérée L'emplacement associé existe déjà

J'ai le problème suivant dans Azure Databricks. Parfois, lorsque j'essaie d'enregistrer un DataFrame en tant que table gérée:

SomeData_df.write.mode('overwrite').saveAsTable("SomeData")

J'obtiens l'erreur suivante:

"Impossible de créer la table gérée ('SomeData'). L'emplacement associé ('dbfs:/user/Hive/warehouse/somedata') existe déjà .;"

J'avais l'habitude de résoudre ce problème en exécutant une commande% fs rm pour supprimer cet emplacement, mais maintenant j'utilise un cluster géré par un autre utilisateur et je ne peux plus exécuter rm sur cet emplacement.

Pour l'instant, le seul correctif auquel je peux penser est d'utiliser un nom de table différent.

Ce qui rend les choses encore plus particulières, c'est le fait que la table n'existe pas. Quand je cours:

%sql
SELECT * FROM SomeData

Je reçois l'erreur:

Erreur dans l'instruction SQL: AnalysisException: table ou vue introuvable: SomeData;

Comment puis-je le réparer?

8
BuahahaXD

Il semble qu'il y en ait quelques autres avec le même problème .

Une solution de contournement temporaire consiste à utiliser

dbutils.fs.rm("dbfs:/user/Hive/warehouse/SomeData/", true)

pour supprimer la table avant de la recréer.

7
char

J'ai le même problème, j'utilise

create table if not exists USING delta

Si je supprime d'abord les fichiers suggérés, il les crée une fois, mais la deuxième fois que le problème se répète, il semble que la table de création n'existe pas ne reconnaît pas la table et essaie de la créer quand même

Je ne veux pas supprimer la table à chaque fois, j'essaie en fait d'utiliser MERGE pour garder la table.

0
OHabushi

Pour une réponse plus contextuelle, exécutez ceci dans votre bloc-notes:

dbutils.fs.rm("dbfs:/user/Hive/warehouse/SomeData", recurse=True)

Selon Databricks documentation , cela fonctionnera dans un cahier Python ou Scala, mais vous devrez utiliser la commande magique %python au début de la cellule si vous utilisez un bloc-notes R ou SQL.

0
David Maddox