【问题标题】:Apache Spark SQL get values in dataframe from SQL queryApache Spark SQL 从 SQL 查询中获取数据框中的值
【发布时间】:2017-12-10 00:39:40
【问题描述】:

我正在尝试使用 Apache Spark 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 中的查询返回实际值,而不是列、行或字段。在这种情况下,结果是一个字符串,但也可以是一个 int - 人的年龄 = 23。

【问题讨论】:

    标签: sql scala apache-spark


    【解决方案1】:

    这可能是因为查询没有返回任何项目。最好使用headOption

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

    或将其推送到 SQL:

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

    【讨论】:

      猜你喜欢
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      • 2018-08-27
      • 2019-11-19
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多