2017-07-08 69 views
0

我正在執行twitter示例代碼,而我得到錯誤的值頭不是org.apache.spark.sql.Row的成員,可以有人請解釋一下這個錯誤。值頭是不是org.apache.spark.sql.Row的成員

val tweets = sc.textFile(tweetInput) 
    println("------------Sample JSON Tweets-------") 
    for (tweet <- tweets.take(5)) { 
     println(gson.toJson(jsonParser.parse(tweet))) 
    } 

    val tweetTable = sqlContext.jsonFile(tweetInput).cache() 
    tweetTable.registerTempTable("tweetTable") 

    println("------Tweet table Schema---") 
    tweetTable.printSchema() 

    println("----Sample Tweet Text-----") 
    sqlContext.sql("SELECT text FROM tweetTable LIMIT 10").collect().foreach(println) 

    println("------Sample Lang, Name, text---") 
    sqlContext.sql("SELECT user.lang, user.name, text FROM tweetTable LIMIT 1000").collect().foreach(println) 

    println("------Total count by languages Lang, count(*)---") 
    sqlContext.sql("SELECT user.lang, COUNT(*) as cnt FROM tweetTable GROUP BY user.lang ORDER BY cnt DESC LIMIT 25").collect.foreach(println) 

    println("--- Training the model and persist it") 
    val texts = sqlContext.sql("SELECT text from tweetTable").map(_.head.toString) 
    // Cache the vectors RDD since it will be used for all the KMeans iterations. 
    val vectors = texts.map(Utils.featurize).cache() 
+0

我在這行文字VAL = sqlContext.sql得到錯誤(」從tweetTable中選擇文本「)。map(_。head.toString) –

+0

tweetTable的方案是什麼?它有「頭」列嗎? – chaitan64arun

+0

我正在研究下面的類,我將json的推文轉換爲表格格式,而這個json沒有列頭。 https://databricks.gitbooks.io/databricks-spark-reference-applications/content/twitter_classifier/scala/src/main/scala/com/databricks/apps/twitter_classifier/ExamineAndTrain.scala –

回答

0

我認爲你的問題是,sql方法返回一個數據集 s。因此_代表和沒有head方法(它解釋錯誤消息)。

要訪問的項目在一排,你可以做以下之一:

// get the first element in the Row 
val texts = sqlContext.sql("...").map(_.get(0)) 

// get the first element as an Int 
val texts = sqlContext.sql("...").map(_.getInt(0)) 

這裏看到更多的信息:https://spark.apache.org/docs/2.1.0/api/java/org/apache/spark/sql/Row.html

相關問題