Définition d'une archive de dépendances
Vos applications Java ou Scala peuvent nécessiter des fichiers JAR supplémentaires que vous ne pouvez pas, ou ne voulez pas, regrouper dans un Fat JAR. Vous pouvez également inclure du code natif ou d'autres ressources à mettre à disposition dans l'exécution Spark.
Lorsque les options spark-submit ne fonctionnent pas, le service de flux de données a la possibilité de fournir une archive ZIP (archive.zip) avec votre application pour regrouper les dépendances de tierce partie. L'archive ZIP peut être créée à l'aide d'un outil basé sur Docker. archive.zip est installé sur tous les noeuds Spark avant d'exécuter l'application. Si vous construisez archive.zip correctement, les bibliothèques Python sont ajoutées à l'exécution et les fichiers JAR sont ajoutés au chemin de classe Spark. Les bibliothèques ajoutées sont propres à une exécution. Cela signifie qu'ils n'interfèrent pas avec d'autres exécutions concurrentes ou ultérieures. Une seule archive peut être fournie par exécution.
Tout le contenu de l'archive doit être compatible avec l'environnement d'exécution du service de flux de données. Par exemple, le flux de données s'exécute sur Oracle Linux à l'aide de versions particulières de Java et Python. Le code binaire compilé pour d'autres systèmes d'exploitation ou les fichiers JAR compilés pour d'autres versions de Java peuvent entraîner l'échec de l'exécution. Le service de flux de données fournit des outils pour vous aider à créer des archives contenant des logiciels compatibles. Cependant, ces archives sont des fichiers zip ordinaires, de sorte que vous êtes libre de les créer comme vous voulez. Si vous utilisez vos propres outils, vous devez vérifier leur compatibilité.
Les archives de dépendances, comme vos applications Spark, sont chargées dans le service de flux de données. La définition de votre application de flux de données contient un lien vers cette archive, qui peut être remplacée au moment de l'exécution. Lorsque vous exécutez votre application, l'archive est téléchargée et installée avant l'exécution de la tâche Spark. L'archive est privée à l'exécution. Cela signifie, par exemple, que vous pouvez exécuter simultanément deux instances différentes de la même application, avec des dépendances différentes, sans aucun conflit. Les dépendances ne persistent pas entre les exécutions. Il n'y a donc aucun problème avec les versions conflictuelles des autres applications Spark que vous pouvez exécuter.
Création d'une archive de dépendances à l'aide de l'ensemble de dépendances du service de flux de données
Structure de l'archive de dépendances
Les archives de dépendances sont des fichiers zip ordinaires. Les utilisateurs expérimentés peuvent créer des archives à l'aide de leurs propres outils, plutôt qu'à l'aide de Data Flow Dependency Packager. Une archive de dépendances correctement construite présente l'outline générale suivante :
python
python/lib
python/lib/python3.6/<your_library1>
python/lib/python3.6/<your_library2>
python/lib/python3.6/<...>
python/lib/python3.6/<your_libraryN>
python/lib/user
python/lib/user/<your_static_data>
java
java/<your_jar_file1>
java/<...>
java/<your_jar_fileN>
Le service de flux de données extrait les fichiers d'archives du répertoire
/opt/dataflow.Valider un fichier Archive.zip à l'aide de l'ensemble de dépendances du service de flux de données
Vous pouvez utiliser l'ensemble de dépendances du service de données pour valider un fichier archive.zip localement, avant de charger le fichier dans le stockage d'objets.
Naviguez jusqu'au répertoire contenant le fichier archive.zip et exécutez les commandes suivantes, selon la forme :
docker run --platform linux/arm64 --rm -v $(pwd):/opt/dataflow --pull always -it phx.ocir.io/axmemlgtri2a/dataflow/dependency-packager-linux_arm64_v8:latest -p 3.11 --validate archive.zipdocker run --platform linux/amd64 --rm -v $(pwd):/opt/dataflow --pull always -it phx.ocir.io/axmemlgtri2a/dataflow/dependency-packager-linux_x86_64:latest -p 3.11 --validate archive.zipExemples de fichiers requirements.txt et packages.txt
requirements.txt comprend la trousse SDK pour Python version 2.14.3 du service de flux de données dans une application de flux de données :-i https://pypi.org/simple
certifi==2020.4.5.1
cffi==1.14.0
configparser==4.0.2
cryptography==2.8
oci==2.14.3
pycparser==2.20
pyopenssl==19.1.0
python-dateutil==2.8.1
pytz==2020.1
six==1.15.0
requirements.txt comprend une combinaison de sources PyPI, de sources Web et de sources locales pour les fichiers wheel Python :-i https://pypi.org/simple
blis==0.4.1
catalogue==1.0.0
certifi==2020.4.5.1
chardet==3.0.4
cymem==2.0.3
https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.0/en_core_web_sm-2.2.0.tar.gz#egg=en-core-web-sm
idna==2.9
importlib-metadata==1.6.0 ; python_version < '3.8'
murmurhash==1.0.2
numpy==1.18.3
plac==1.1.3
preshed==3.0.2
requests==2.23.0
spacy==2.2.4
srsly==1.0.2
thinc==7.4.0
tqdm==4.45.0
urllib3==1.25.9
wasabi==0.6.0
zipp==3.1.0
/opt/dataflow/mywheel-0.1-py3-none-any.whl
ojdbc8-18.3.jar
oraclepki-18.3.jar
osdt_cert-18.3.jar
osdt_core-18.3.jar
ucp-18.3.jar