2016-09-08 4 views
0

Ниже кода завершается с AnalysisException: sc.version Строка = 1.6.0Проблема с добавлением столбца к DataFrame

case class Person(name: String, age: Long) 
val caseClassDF = Seq(Person("Andy", 32)).toDF() 
caseClassDF.count() 

val seq = Seq(1) 
val rdd = sqlContext.sparkContext.parallelize(seq) 
val df2 = rdd.toDF("Counts") 
df2.count() 

val withCounts = caseClassDF.withColumn("duration", df2("Counts")) 

ответ

0

caseClassDF.withColumn ("длительность", df2 ("Графы")), здесь столбец должен иметь один и тот же файл данных (в вашем случае caseClassDF). AFAIK, Spark не позволяет столбцу другого DataFrame в withColumn.

PS: Я являюсь пользователем Спарк 1.6.x, не уверен, был ли это прийти в Спарк 2.x

+0

Спасибо Rishabh. Обновлена ​​версия Spark. Я не уверен, что Столбец должен быть из одного кадра данных. – user2849678

1

По какой-то причине, он работает с ОДС:

import org.apache.spark.sql.functions.udf 
case class Person(name: String, age: Long, day: Int) 
val caseClassDF = Seq(Person("Andy", 32, 1), Person("Raman", 22, 1), Person("Rajan", 40, 1), Person("Andy", 42, 2), Person("Raman", 42, 2), Person("Rajan", 50, 2)).toDF() 

val calculateCounts= udf((x: Long, y: Int) => 
    x+y) 

val df1 = caseClassDF.withColumn("Counts", calculateCounts($"age", $"day")) 
df1.show 

+-----+---+---+------+ 
| name|age|day|Counts| 
+-----+---+---+------+ 
| Andy| 32| 1| 33| 
|Raman| 22| 1| 23| 
|Rajan| 40| 1| 41| 
| Andy| 42| 2| 44| 
|Raman| 42| 2| 44| 
|Rajan| 50| 2| 52| 
+-----+---+---+------+