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 :
Créez et exportez votre application Studio vers Amazon S3. Il doit s’agir d’un fichier zip.
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 (2groupID
, 3var
au total) :kinesis.analytics.flink.run.options
python : source/note.py
fichier jar : PythonApplicationDependencies lib/ .jar
managed.deploy_as_app.options
Base de données ARN :
<glue database ARN (Amazon Resource Name)>
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 :
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
. Exécution de la commande suivante pour supprimer un package :
%flink.pyflink !pip uninstall -y <package-to-remove>
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é.
Utilisez
pipdeptree
pour découvrir tous les consommateursscipy
et vérifier si vous pouvez supprimerscipy
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]
Inspectez soigneusement l’utilisation de
seaborn
,statsmodels
etplotnine
dans vos applications. Si vos applications ne dépendent d’aucun des packagesscipy
,seaborn
,statemodels
ouplotnine
, vous pouvez tous les supprimer ou uniquement ceux dont vos applications n’ont pas besoin.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
Choisissez Configuration dans le coin supérieur droit de l’écran.
Choisissez Interprète.
-
Choisissez Redémarrer, puis OK.