web-dev-qa-db-fra.com

Comment puis-je obtenir la SparkSession actuelle à n'importe quel endroit des codes

J'ai créé une session dans la fonction main(), comme ceci:

val sparkSession = SparkSession.builder.master("local[*]").appName("Simple Application").getOrCreate()

Maintenant, si je veux configurer l'application ou accéder aux propriétés, je peux utiliser la variable locale sparkSession dans la même fonction.

Et si je veux accéder à cette sparkSession ailleurs dans le même projet, comme project/module/.../.../xxx.scala. Que devrais-je faire?

7
PC9527

Une fois qu'une session a été créée (n'importe où), vous pouvez utiliser en toute sécurité:

SparkSession.builder().getOrCreate()

Pour obtenir la (même) session n'importe où dans le code, tant que la session est toujours en cours . Spark maintient une seule session active. Par conséquent, à moins que celle-ci ne soit arrêtée ou bloquée, vous obtenez la même. 

16
Tzach Zohar

Lorsque la variable SparkSession a été définie comme 

val sparkSession = SparkSession.builder.master("local[*]").appName("Simple Application").getOrCreate()

Cette variable va passer de point/refer à une seule SparkSession en tant que val. Et vous pouvez toujours passer à différentes classes pour qu'ils puissent y accéder ainsi que 

val newClassCall = new NewClass(sparkSession)

Vous pouvez maintenant utiliser la même sparkSession dans cette nouvelle classe.

1
Ramesh Maharjan