2017-12-09 8 views
0

ApacheのスパークSQLはSQLクエリからのデータフレーム内の値を取得し、私は次のようにApacheのスパーク2.2.0でのSQLクエリから文字列値を取得しようとしている

val result = spark.sql("SELECT AnswerText FROM datatable WHERE participantUUID='010A0550' AND assessmentNumber=0 AND Q_id_string = '1_Age'") 

assertResult("23") { 
    result.collect.head.getString(0) 
} 

私は次の例外を取得:

next on empty iterator 
java.util.NoSuchElementException: next on empty iterator 

私はcollectAsListを返してみましたが、行を返してもそれから何の喜びも得られませんでした。単純に、列、行、またはフィールドではなく、DataFrameのクエリから実際の値を返したいだけです。この場合、結果は文字列ですが、人の年齢= 23となる可能性もあります。

答えて

1

これはおそらく、クエリがアイテムを返さないためです。

assertResult(1) { 
    spark 
    .sql("""SELECT AnswerText 
      FROM datatable 
      WHERE participantUUID='010A0550' AND 
        assessmentNumber=0 AND 
        Q_id_string = '1_Age'""") 
    .where($"AnswerText" === "23").count 
} 
headOption

assertResult(Some("23")) { 
    result.take(1).headOption.map(_.getAs[String]("AnswerText")) 
} 

を使用するか、SQLにそれをプッシュする方が良いだろう

関連する問題