Können sagen, ich bin eine flache Datei von HDFS in Funken mit so etwas wie das folgende Import:Array TUPLE Spark mit vielen Eingangsvariablen
val data = sc.textFile("hdfs://name_of_file.tsv").map(_.split('\t'))
Dieses eine Array[Array[String]]
produzieren wird. Wenn ich ein Array von Tupeln wollte, könnte ich tun, wie in diesem solution referenziert und die Elemente zu einem Tupel zuordnen.
val dataToTuple = data.map{ case Array(x,y) => (x,y) }
Aber was ist, wenn meine Eingabedaten sagen, 100 Spalten? Gibt es einen Weg in Scala mit einer Art Wildcard zu sagen
ohne zu schreiben auf 100 Variable zu passen auf?
Ich habe versucht, so etwas wie
val dataToTuple = data.map{ case Array(_) => (_) }
tun, aber das scheint nicht viel Sinn zu machen.
Warum sollten Sie ein Tupel mit 100 Elementen haben? Verwenden Sie einfach das Array, das 'split' erzeugt? –
Sie können eine Zeile anstelle eines Tuple –
erstellen, wenn Sie wirklich brauchen - Sie können Shapeless-Bibliothek verwenden: http://StackOverflow.com/A/19901310/1809978, aber beachten Sie, dass die maximale Größe des Tupels ist in scala auf 22 begrenzt (das letzte Mal, als ich es überprüft habe) + Ich glaube, Sie müssen noch Typ pro Spalte angeben. Außerdem ist es vielleicht nicht das, was Sie wirklich brauchen – dk14