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?
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.
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.
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.