comment définir et obtenir des variables statiques à partir d'étincelle?

J'ai une classe comme ceci:

public class Test {
    private static String name;

    public static String getName() {
        return name;
    }

    public static void setName(String name) {
        Test.name = name;
    }

    public static void print() {
        System.out.println(name);
    }

}

dans mon Étincelle pilote, je suis en paramètre le nom de ce genre et l'appel de la print() commande:

public final class TestDriver{

    public static void main(String[] args) throws Exception {
        SparkConf sparkConf = new SparkConf().setAppName("TestApp");
        //...
        //...
        Test.setName("TestName")
        Test.print();
        //...
    }
}

Cependant, je suis un NullPointerException. Comment puis-je passer d'une valeur à la variable globale et de l'utiliser?

À partir de votre code c'est complètement étranger à l'Étincelle. Le master est un programme comme un autre et je ne vois pas le problème. Il doit être sur certains omis de code.
J'ai essayé ce sur la norme de l'application java et cela a fonctionné, donc, je suppose que le problème est avec la parallélisation des tâches et de la distribution du comportement de l'Étincelle cadre.
Pouvez-vous mettre la totalité de la trace de la pile? Ce que je veux dire c'est que le problème est probablement dans une ligne, vous n'avez pas mis au-dessus de...
Avec "Variable Globale" voulez-vous dire de la valeur définie une fois sur le conducteur et utilisés dans tous les travailleurs? ou certains mutable structure commune qui est défini et mis à jour, comme le travail progresse?
Notez également que votre exemple, pourrait ne pas être un ensemble minimal de reproduire le problème. Plus probablement, le Test.print() est appelée à l'intérieur d'une fermeture pour une Étincelle de l'opération.

OriginalL'auteur diplomaticguru | 2015-04-16