簡體   English   中英

價值負責人不是org.apache.spark.sql.Row的成員

[英]value head is not a member of org.apache.spark.sql.Row

我正在執行twitter示例代碼,而當我因Value Head出現錯誤而不是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()

我認為您的問題是sql方法返回Row的DataSet。 因此,_表示Row並且Row沒有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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM