Résoudre les problèmes liés aux blocs-notes Studio pour Managed Service pour Apache Flink - Service géré pour Apache Flink

Le service géré Amazon pour Apache Flink était auparavant connu sous le nom d’Amazon Kinesis Data Analytics pour Apache Flink.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résoudre les problèmes liés aux blocs-notes Studio pour Managed Service pour Apache Flink

Cette section contient des informations de dépannage pour les blocs-notes Studio.

Arrêter une application bloquée

Pour arrêter une application bloquée dans un état transitoire, appelez l'StopApplicationaction avec le Force paramètre défini sur. true Pour plus d’informations, consultez Application en cours d’exécution dans le Guide du développeur du service géré pour Apache Flink.

Déployez en tant qu'application à l'état durable VPC sans accès à Internet

La deploy-as-application fonction Managed Service for Apache Flink Studio ne prend pas en charge VPC les applications sans accès à Internet. Nous vous recommandons de créer votre application dans Studio, puis d’utiliser le service géré pour Apache Flink pour créer manuellement une application Flink et sélectionner le fichier zip que vous avez créé dans votre bloc-notes.

La procédure suivante montre comment procéder :

  1. Créez et exportez votre application Studio vers Amazon S3. Il doit s’agir d’un fichier zip.

  2. Créez manuellement une application de service géré pour Apache Flink avec un chemin de code faisant référence à l’emplacement du fichier zip dans Amazon S3. En outre, vous devrez configurer l’application avec les variables env suivantes (2 groupID, 3 var au total) :

  3. kinesis.analytics.flink.run.options

    1. python : source/note.py

    2. fichier jar : PythonApplicationDependencies lib/ .jar

  4. managed.deploy_as_app.options

    1. Base de données ARN : <glue database ARN (Amazon Resource Name)>

  5. Vous devrez peut-être accorder des autorisations aux IAM rôles Managed Service for Apache Flink Studio et Managed Service for Apache Flink pour les services utilisés par votre application. Vous pouvez utiliser le même IAM rôle pour les deux applications.

Deploy-as-app réduction de la taille et du temps de fabrication

Les applications Studio deploy-as-app for Python regroupent tout ce qui est disponible dans l'environnement Python, car nous ne pouvons pas déterminer les bibliothèques dont vous avez besoin. Cela peut entraîner une taille plus grande que nécessaire deploy-as-app. La procédure suivante montre comment réduire la taille de l'application deploy-as-app Python en désinstallant les dépendances.

Si vous créez une application Python avec des deploy-as-app fonctionnalités de Studio, vous pouvez envisager de supprimer les packages Python préinstallés du système si vos applications n'en dépendent pas. Cela permettra non seulement de réduire la taille finale de l'artefact afin d'éviter de dépasser la limite de service pour la taille de l'application, mais également d'améliorer le temps de création des applications dotées de cette fonctionnalité. deploy-as-app

Vous pouvez exécuter la commande suivante pour répertorier tous les packages Python installés avec leur taille d’installation respective et supprimer de manière sélective les packages volumineux.

%flink.pyflink !pip list --format freeze | awk -F = {'print $1'} | xargs pip show | grep -E 'Location:|Name:' | cut -d ' ' -f 2 | paste -d ' ' - - | awk '{gsub("-","_",$1); print $2 "/" tolower($1)}' | xargs du -sh 2> /dev/null | sort -hr
Note

apache-beam est requis pour que Flink Python fonctionne. Vous ne devez jamais supprimer ce package et ses dépendances.

Voici la liste des packages Python préinstallés dans Studio V2 dont la suppression peut être envisagée :

scipy statsmodels plotnine seaborn llvmlite bokeh pandas matplotlib botocore boto3 numba
Pour supprimer un package Python du bloc-notes Zeppelin :
  1. Vérifiez si votre application dépend du package, ou de l’un de ses packages consommateurs, avant de le supprimer. Vous pouvez identifier les dépendances d’un package à l’aide de pipdeptree.

  2. Exécution de la commande suivante pour supprimer un package :

    %flink.pyflink !pip uninstall -y <package-to-remove>
  3. Si vous devez récupérer un package que vous avez supprimé par erreur, exécutez la commande suivante :

    %flink.pyflink !pip install <package-to-install>
Exemple : supprimez le scipy package avant de déployer votre application Python avec deploy-as-app une fonctionnalité.
  1. Utilisez pipdeptree pour découvrir tous les consommateurs scipy et vérifier si vous pouvez supprimer scipy en toute sécurité.

    • Installez l’outil via un bloc-notes :

      %flink.pyflink !pip install pipdeptree
    • Obtenez l’arbre de dépendance inversé de scipy en exécutant :

      %flink.pyflink !pip -r -p scipy

      Vous devriez voir des résultats similaires à ce qui suit (condensés par souci de brièveté) :

      ... ------------------------------------------------------------------------ scipy==1.8.0 ├── plotnine==0.5.1 [requires: scipy>=1.0.0] ├── seaborn==0.9.0 [requires: scipy>=0.14.0] └── statsmodels==0.12.2 [requires: scipy>=1.1] └── plotnine==0.5.1 [requires: statsmodels>=0.8.0]
  2. Inspectez soigneusement l’utilisation de seaborn, statsmodels et plotnine dans vos applications. Si vos applications ne dépendent d’aucun des packages scipy, seaborn, statemodels ou plotnine, vous pouvez tous les supprimer ou uniquement ceux dont vos applications n’ont pas besoin.

  3. Supprimez le package en exécutant :

    !pip uninstall -y scipy plotnine seaborn statemodels

Annuler des offres d'emploi

Cette section explique comment annuler des tâches Apache Flink auxquelles vous ne pouvez pas accéder depuis Apache Zeppelin. Si vous souhaitez annuler une telle tâche, rendez-vous sur le tableau de bord Apache Flink, copiez l’ID de la tâche, puis utilisez-le dans l’un des exemples suivants.

Pour annuler une seule tâche :

%flink.pyflink import requests requests.patch("https://zeppelin-flink:8082/jobs/[job_id]", verify=False)

Pour annuler toutes les tâches en cours :

%flink.pyflink import requests r = requests.get("https://zeppelin-flink:8082/jobs", verify=False) jobs = r.json()['jobs'] for job in jobs: if (job["status"] == "RUNNING"): print(requests.patch("https://zeppelin-flink:8082/jobs/{}".format(job["id"]), verify=False))

Pour annuler toutes les tâches :

%flink.pyflink import requests r = requests.get("https://zeppelin-flink:8082/jobs", verify=False) jobs = r.json()['jobs'] for job in jobs: requests.patch("https://zeppelin-flink:8082/jobs/{}".format(job["id"]), verify=False)

Redémarrez l'interpréteur Apache Flink

Pour redémarrer l’interprète Apache Flink dans votre bloc-notes Studio

  1. Choisissez Configuration dans le coin supérieur droit de l’écran.

  2. Choisissez Interprète.

  3. Choisissez Redémarrer, puis OK.