2017-07-08 72 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

相关问题