[PYTHON] L'utilisation du japonais pour les noms de dossier et les noms de bloc-notes dans Databricks peut poser problème

Conclusion d'abord

Si vous utilisez ** japonais pour le nom du dossier ou le nom du bloc-notes **, utilisez dbutils.notebook.run pour en utiliser un autre Il y a des cas où une erreur se produit lors de l'appel d'un notebook

Que voulez-vous dire

J'ai un ordinateur portable avec la structure de dossiers suivante

/Users/xxx@yyy.jp
 |-MyNotebook
 |-Mon cahier
 |-MyNotebookCaller
 |-Appelant MyNotebook
 |-tester
   |-MyNotebook
   |-MyNotebookCaller

Parmi ceux-ci, dans les cas suivants, l'appel d'un autre Notebook à l'aide de dbutils.notebook.run a échoué.

Dans les cas suivants, l'appel a réussi sans problème.

--Lorsque «japonais est utilisé» pour le nom du cahier appelé -/Users/[email protected]/Mon notebook --Lorsque «japonais est utilisé» pour le nom du dossier de stockage du notebook appelé -/Users/[email protected]/test/MyNotebook

Vérification

Description de chaque notebook

C'est un processus simple d'appel en passant des paramètres de MyNotebookCaller ou MyNotebook Caller à MyNotebook, et en imprimant les paramètres reçus dans MyNotebook.

/Users/xxx@yyy.jp/MyNotebook

dbutils.widgets.text("param1", "111")
dbutils.widgets.text("param2", "222")

print("param1:{},param2:{}".format(dbutils.widgets.get("param1"), dbutils.widgets.get("param2")))

/Users/[email protected]/My Notebook

#/Users/xxx@yyy.jp/Identique à mon carnet

/Users/xxx@yyy.jp/MyNotebookCaller

#Cmd1 Appelez MyNotebook dans le même dossier
dbutils.notebook.run(
  "./MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)

#Cmd2 Call My Notebook dans le même dossier
dbutils.notebook.run(
  "./Mon cahier",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)

#Appeler mon notebook dans le dossier de test Cmd3
dbutils.notebook.run(
  "./tester/MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)

/Users/[email protected]/MyNotebook Caller

#/Users/xxx@yyy.jp/Identique à MyNotebookCaller

/Users/[email protected]/Test/MyNotebook

#/Users/xxx@yyy.jp/Identique à mon carnet

/Users/[email protected]/Test/MyNotebookCaller

#Cmd1 Appelez MyNotebook dans le même dossier
dbutils.notebook.run(
  "./MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)

#Cmd2 Appelez MyNotebook dans le dossier un niveau supérieur
dbutils.notebook.run(
  "../MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)

Vérification ① Lorsque «japonais est utilisé» pour le nom du portable appelant

Essayez d'appeler MyNotebook dans le même dossier depuis /Users/[email protected]/MyNotebook Caller

Cmd1 Appelez MyNotebook dans le même dossier


dbutils.notebook.run(
  "./MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)

En conséquence, j'ai obtenu une WorkflowException. Il semble qu'une erreur ait été renvoyée en utilisant le japonais, qui est un caractère autre que des caractères latins (jeu de caractères ASCII).

com.databricks.WorkflowException: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_PARAMETER_VALUE: Only Latin1 (ASCII) characters are currently supported. Any international characters must be removed or replaced in workflow_context

Même si j'appelle MyNotebook dans le dossier de test,

Cmd2 Appelez MyNotebook dans le dossier de test


dbutils.notebook.run(
  "./tester/MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)

Cela a également provoqué une exception WorkflowException

com.databricks.WorkflowException: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_PARAMETER_VALUE: Only Latin1 (ASCII) characters are currently supported. Any international characters must be removed or replaced in workflow_context

Vérification (2) Lorsque «japonais est utilisé» pour le nom du dossier de stockage du notebook appelant

Essayez d'appeler MyNotebook dans le même dossier depuis /Users/[email protected]/test/MyNotebookCaller

Cmd1 Appelez MyNotebook dans le même dossier


dbutils.notebook.run(
  "./MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)

Cela a également abouti à une exception WorkflowException

com.databricks.WorkflowException: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_PARAMETER_VALUE: Only Latin1 (ASCII) characters are currently supported. Any international characters must be removed or replaced in workflow_context

Vérification ③ Quand japonais est utilisé pour le nom du carnet appelé

Essayez d'appeler / Users / xxx @ yyy.jp / MyNotebook depuis /Users/[email protected]/MyNotebookCaller

Cmd2 Call My Notebook dans le même dossier


dbutils.notebook.run(
  "./Mon cahier",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)

Le processus s'est terminé normalement même si le japonais a été utilisé pour le nom du cahier de l'appelé. Il semble que les paramètres passés sont également affichés correctement.

param1:val1,param2:val2

Vérification ④ Quand japonais est utilisé pour le nom du dossier de stockage du notebook appelé

Essayez d'appeler /Users/[email protected]/test/MyNotebook depuis /Users/[email protected]/MyNotebookCaller

Appeler mon notebook dans le dossier de test Cmd3


dbutils.notebook.run(
  "./tester/MyNotebook",
  60,
  {
    "param1": "val1",
    "param2": "val2"
  }
)

Le processus s'est terminé normalement même si le japonais était utilisé pour le nom de dossier du bloc-notes appelé. Il semble que les paramètres passés sont également affichés correctement.

param1:val1,param2:val2

Résumé

Soyez prudent lorsque vous utilisez le japonais pour les noms de dossier et les noms de bloc-notes

Recommended Posts

L'utilisation du japonais pour les noms de dossier et les noms de bloc-notes dans Databricks peut poser problème
Comment enregistrer les informations de point caractéristique de l'image dans un fichier et l'utiliser pour la mise en correspondance
Je pensais qu'il serait lent d'utiliser l'instruction for dans NumPy, mais ce n'était pas le cas.
Pratique pour utiliser les sous-graphiques matplotlib dans l'instruction for
Comment utiliser Decorator dans Django et comment le créer
Est-ce un problème d'éliminer le besoin de ressources humaines analogiques à l'ère de l'IA?
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.
[AWS] Une histoire qui peut être utile pour ceux qui découvrent Lambda-Python et DynamoDB
Comment tromper et utiliser une terrible bibliothèque qui est censée être conservée globalement dans flask
Si vous écrivez un test piloté par table go en python, il peut être préférable d'utiliser subTest
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
Je veux créer un fichier pip et le refléter dans le menu fixe
Connectez-vous à postgreSQL depuis Python et utilisez des procédures stockées dans une boucle.
Comment rendre le nom du conteneur accessible dans Docker en tant que sous-domaine
[Python] Il était très pratique d'utiliser la classe Python pour le programme ROS.
Comment utiliser is et == en Python
Conseils pour ceux qui ne savent pas comment utiliser is et == en Python
Flutter dans Docker - Comment créer et utiliser un environnement de développement Flutter dans un conteneur Docker
Comment lire les fichiers de numéros de série en boucle, les traiter et les représenter graphiquement
Créez un environnement PYNQ sur Ultra96 V2 et connectez-vous à Jupyter Notebook
Une collection de ressources qui peuvent être utiles pour créer et développer des fichiers dotfiles
Jusqu'à ce que vous obteniez des données quotidiennes pour plusieurs années de stock japonais et que vous les sauvegardiez dans un seul CSV (Python)
Calculons en fait le problème statistique avec Python
Créez un chat bot et entraînez-vous à être populaire.
Script Python qui explore le flux RSS du statut Azure et le publie sur Hipchat
GradCAM avec 22 lignes de code. tf_explain peut être facile à utiliser, je le recommande!
Ce serait sage si vous pouviez écrire quelque chose comme booléen et "A" ou "B" [Python] [Mais]
Utilisez ipywidgets dans jupyter notebook pour manipuler les paramètres de manière interactive, puis essayez le traitement d'image
Comment vérifier s'il est dans le type de dictionnaire (Dictionary, Hash) en utilisant tout ou partie
Utilisez slackbot comme relais et retournez de bouteille à slack au format json.
Comment utiliser Docker pour conteneuriser votre application et comment utiliser Docker Compose pour exécuter votre application dans un environnement de développement
Une solution au problème que les fichiers contenant [et] ne sont pas répertoriés dans glob.glob ()