Vorrei ripetere un RDD di stringhe e "fare qualcosa" su ogni stringa. L'output dovrebbe essere double[][]
. Ecco un esempio con un ciclo for. Capisco che ho bisogno di utilizzare (credo) la funzione foreach
per gli RDD Java. Tuttavia, non ho idea di come capire la sintassi. La documentazione non è particolarmente utile. Non ho Java 8.Iterate attraverso un RDD Java per riga
Ecco un esempio di cosa mi piacerebbe fare se potessi utilizzare un ciclo regolare for
.
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]);
}
}
}
Capisco che foreach
sembra richiedere una funzione che ha un tipo di ritorno vuoto. Non sono sicuro di come lavorare con quello. Ecco quello che ho cercato finora (ovviamente la sintassi è sbagliata):
double[][] matrix = new double[data.count()][30];
foreach(String s : data) {
String[] splitvals = s.split("\\t");
double[] vals = Double.parseDouble(splitvals);
matrix[s] = vals;
}
Dal momento che si desidera un tipo di ritorno, e non nullo, si dovrebbe usare 'map' invece di 'foreach' e restituisce una nuova matrice per ogni stringa. – mattinbits
Sareste in grado di fornire un esempio, @mattinbits? Come ho detto, non ho familiarità con Spark Java e la maggior parte degli esempi di mappe che ho visto sono stati in Java 8 con funzioni lambda, che non posso usare. –
Potrei fornirne uno in Scala ma non Java la risposta qui sotto da @Balduz sembra buona anche se – mattinbits