2016-08-22 5 views
0

я пытаюсь соединить дирижабль с Highcharts ..couldnot подключения апачский-дирижабль ошибки Highcharts: значение seriesCol не является членом org.apache.spark.sql.DataFrame

%spark 
import com.knockdata.zeppelin.highcharts._ 
import com.knockdata.zeppelin.highcharts.model._ 
import sqlContext.implicits._ 

val Tokyo = Seq(7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 
18.3, 13.9, 9.6).map(("Tokyo", _)) 

val df = (Tokyo).toDF("city", "temperature") 

df.show() 

highcharts(df.seriesCol("city").series("y" -> col("temperature"))).plot() 

который дает

import com.knockdata.zeppelin.highcharts._ 
import com.knockdata.zeppelin.highcharts.model._ 
import sqlContext.implicits._ 
Tokyo: Seq[(String, Double)] = List((Tokyo,7.0), (Tokyo,6.9), (Tokyo,9.5), (Tokyo,14.5), (Tokyo,18.2), (Tokyo,21.5), (Tokyo,25.2), (Tokyo,26.5), (Tokyo,23.3), (Tokyo,18.3), (Tokyo,13.9), (Tokyo,9.6)) 
df: org.apache.spark.sql.DataFrame = [city: string, temperature: double] 
+-----+-----------+ 
| city|temperature| 
+-----+-----------+ 
|Tokyo|  7.0| 
|Tokyo|  6.9| 
|Tokyo|  9.5| 
|Tokyo|  14.5| 
|Tokyo|  18.2| 
|Tokyo|  21.5| 
|Tokyo|  25.2| 
|Tokyo|  26.5| 
|Tokyo|  23.3| 
|Tokyo|  18.3| 
|Tokyo|  13.9| 
|Tokyo|  9.6| 
+-----+-----------+ 
<console>:201: error: value seriesCol is not a member of org.apache.spark.sql.DataFrame 
       highcharts(df.seriesCol("city").series("y" -> col("temperature"))).plot() 

я добавил зависимости артефакт в искровом интерпретаторе, как com.knockdata:zeppelin-highcharts:0.2

следовал https://github.com/knockdata/zeppelin-highcharts/blob/master/docs/DemoLineChart.md и пытался банковскими данные, используя Are there better interface to add Highcharts support to Zeppelin, но получение

<console>:224: error: value series is not a member of org.apache.spark.rdd.RDD[Bank] 
possible cause: maybe a semicolon is missing before `value series'? 
       .series("x" -> "age", "y" -> avg(col("income"))) 

, пожалуйста, помогите мне, где я иду не так? В чем может быть проблема? заблаговременно

ответ

0

DataFrame может быть неявно преобразован в SeriesHolder, который имеет функцию seriesCol. Он был добавлен в версию 0.6.0.

df.seriesCol("city") 

Ошибка должна в связи с использованием неправильной версии spark-highcharts. Образец кода (doc) соответствует версии 0.6.0 (карта непосредственно к версии zeppelin).

Использование докеров может быть самым простым способом. Или использовать подобный способ, как Dockerfile

docker run -p 8080:8080 -d knockdata/zeppelin-highcharts 
+0

я использую только дирижабль 0.6.0. они сказали: «Если вы хотите работать на вашем существующем zeppelin, следуйте Use In Zeppelin», мне нужно снова использовать докер? и почему банковские данные не работают? –

0

я изменил артефакт зависимостей в свече интерпретатора com.knockdata:zeppelin-highcharts:0.2 для com.knockdata:zeppelin-highcharts:0.6.0, чтобы решить эту проблему .. но проблема банка данных по-прежнему существует .. любая помощь по этому вопросу?

%spark 
import com.knockdata.zeppelin.highcharts._ 
import com.knockdata.zeppelin.highcharts.model._ 
import sqlContext.implicits._ 

val bankText = sc.textFile("/home/priyanka/Downloads/bank-data.csv") 

case class Bank(age:Integer, region:String, income : Float, married : String, children : Integer, car:String, save_act:String, current_act : String, mortgage : String, pep : String) 

// split each line, filter out header (starts with "age"), and map it into Bank case class 
val bank = bankText.map(s=>s.split(",")).filter(s=>s(0)!="age").map(
    s=>Bank(s(0).toInt, 
      s(1).replaceAll("\"", ""), 
      s(2).replaceAll("\"", "").toFloat, 
      s(3).replaceAll("\"", ""), 
      s(4).replaceAll("\"", "").toInt, 
      s(5).replaceAll("\"", ""), 
      s(6).replaceAll("\"", ""), 
      s(7).replaceAll("\"", ""),  
      s(8).replaceAll("\"", ""), 
      s(9).replaceAll("\"", "") 
     ) 
) 

// convert to DataFrame and create temporal table 
bank.toDF().registerTempTable("bank") 

highcharts(bank.series("x" -> "age", "y" -> avg(col("income"))).orderBy(col("age"))).plot() 

который дает

import com.knockdata.zeppelin.highcharts._ 
import com.knockdata.zeppelin.highcharts.model._ 
import sqlContext.implicits._ 
bankText: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[49] at textFile at <console>:62 
defined class Bank 
bank: org.apache.spark.rdd.RDD[Bank] = MapPartitionsRDD[52] at map at <console>:66 
<console>:70: error: value series is not a member of org.apache.spark.rdd.RDD[Bank] 
possible cause: maybe a semicolon is missing before `value series'? 
       .series("x" -> "age", "y" -> avg(col("income"))) 
       ^

спасибо

+0

Большое спасибо за его использование. Я автор. Это было связано с выпуском версии. Используйте zeppelin-highcart: 0.6.0 на zeppelin 0.6. (Предыдущий документ был назван zeppelin-highcharts: 0.6.0-SNAPSHOT, интерфейс был изменен. У меня есть правильный документ) –

+0

спасибо большое .. спасибо за то, что вы дали :) :) любая идея, что идет не так с чтением из файл? банковские данные? некоторые столкновения между 'org.apache.spark.rdd.RDD' и' org.apache.spark.sql.DataFrame'? –

+0

Банку нужен DataFrame. Переместите 'toDF()' в конец банка define –

 Смежные вопросы

  • Нет связанных вопросов^_^