J'ai récemment commencé à expérimenter avec les deux Spark et Java. J'ai d'abord parcouru le fameux WordCount
exemple en utilisant RDD
et tout s'est déroulé comme prévu. Maintenant, j'essaie de mettre en œuvre mon propre exemple mais en utilisant des DataFrames et non des RDD.
Je lis donc un ensemble de données à partir d'un fichier avec
DataFrame df = sqlContext.read()
.format("com.databricks.spark.csv")
.option("inferSchema", "true")
.option("delimiter", ";")
.option("header", "true")
.load(inputFilePath);
puis j'essaie de sélectionner une colonne spécifique et d'appliquer une transformation simple à chaque ligne comme ça
df = df.select("start")
.map(text -> text + "asd");
Mais la compilation trouve un problème avec la deuxième ligne que je ne comprends pas complètement (la colonne de début est déduite du type string
).
Plusieurs méthodes abstraites non prioritaires trouvées dans l'interface scala.Function1
Pourquoi ma fonction lambda est-elle traitée comme une fonction Scala et que signifie réellement le message d'erreur?
Si vous utilisez la fonction select
sur une trame de données, vous récupérez une trame de données. Ensuite, vous appliquez une fonction sur le Row
datatype pas la valeur de la ligne. Ensuite, vous devez d'abord obtenir la valeur, vous devez donc procéder comme suit:
df.select("start").map(el->el.getString(0)+"asd")
Mais vous obtiendrez un RDD comme valeur de retour et non un DF