2016-02-18 3 views
1

Так я новичок как Scala и Спарк так что это может быть своего рода немой вопрос ... У меня есть следующий код:сложение двух dataframe целочисленных значений в Scala/Спарк

val sqlContext = new org.apache.spark.sql.SQLContext(sc) 
import sqlContext.implicits._ 

val df = sc.parallelize(List(1,2,3)).toDF(); 
df.foreach(value => println(value(0) + value(0))); 

error: type mismatch; 
found : Any 
required: String 

Что не так ли? Как я могу сказать, что «это целое число не является»? Я пробовал значение (0) .toInt, но «значение toInt не является членом Any». Я попробовал Список (1: Целое число, 2: Целое число, 3: Целое число), но после этого я не могу преобразовать в dataframe ...

ответ

0

Spark - нетипизированный контейнер. Если вы хотите извлечь ничего, кроме Any вы должны использовать набранный метод экстрактор или шаблон, соответствующий всем (см Spark extracting values from a Row):

df.rdd.map(value => value.getInt(0) + value.getInt(0)).collect.foreach(println) 

На практике должна быть причина, чтобы извлечь эти значения вообще. Вместо этого вы можете работать непосредственно на DataFrame:

df.select($"_1" + $"_1") 
Смежные вопросы