Itérer un Java CA en ligne

Je voudrais faire une itération sur un CA de chaînes et de "faire quelque chose" pour chaque chaîne. La sortie doit être double[][]. Voici un exemple avec une boucle for. Je comprends que j'ai besoin de l'utiliser (je pense) le foreach fonction de Java RDDs. Cependant, je n'ai aucune idée de la façon de comprendre la syntaxe. La Documentation n'est pas particulièrement utile. Je n'ai pas de Java 8.

Voici un exemple de ce que je voudrais faire si je pouvais utiliser un for boucle.

public class PCA {

    public static void main(String[] args) {
        SparkConf conf = new SparkConf().setAppName("PCA Example");
        SparkContext sc = new SparkContext(conf);

        RDD<String> data = sc.textFile("my/directory/my/dataset.txt", 0);

        //here is the "type" of code I would like to execute
        //30 because I have 30 variables
        double[][] vals = new double[data.count()][30];

        double[] temp;
        for (int i = 0; i < data.count(); i++) {
            temp = splitStringtoDoubles(data[i]);
            vals[i] = temp;
        }
    }

    private static double[] splitStringtoDoubles(String s) {
        String[] splitVals = s.split("\\t");
        Double[] vals = new Double[splitVals.length];
        for (int i = 0; i < splitVals.length; i++) {
            vals[i] = Double.parseDouble(splitVals[i]);
        }
    }

}

Je comprends que foreach semble avoir besoin d'une fonction qui a un type de retour void. Vous ne savez pas comment l'utiliser. Voici ce que j'ai essayé jusqu'à présent (évidemment, la syntaxe est mauvaise):

    double[][] matrix = new double[data.count()][30];
    foreach(String s : data) {
        String[] splitvals = s.split("\\t");
        double[] vals = Double.parseDouble(splitvals);
        matrix[s] = vals; 
    }
Puisque vous voulez un type de retour, plutôt que de l'annuler, vous devez utiliser map au lieu de foreach et le retour d'une nouvelle matrice pour chaque chaîne.
Seriez-vous en mesure de fournir un exemple, @mattinbits? Comme je l'ai dit, je ne suis pas familier avec Spark Java et la plupart des exemples de carte j'ai vu ont été en java 8 avec les lambda fonctions, je ne peux pas utiliser.
J'ai pu faire au cours de la Scala, mais pas Java la réponse ci-dessous à partir de @Balduz semble si bon

OriginalL'auteur Katya Handler | 2015-08-05