如何从HiveContext Query中有效地提取值

时间:2017-05-23 19:32:14

标签: scala apache-spark hive

我正在通过HiveContext

运行查询

查询:

val hiveQuery = s"SELECT post_domain, post_country, post_geo_city, post_geo_region
    FROM   $database.$table
    WHERE  year=$year and month=$month and day=$day and hour=$hour and event_event_id='$uniqueIdentifier'"


val hiveQueryObj:DataFrame = hiveContext.sql(hiveQuery)

最初,我使用以下内容从列中提取每个值:

hiveQueryObj.select(column).collectAsList().get(0).get(0).toString

然而,我被告知要避免这种情况,因为它与Hive建立了太多联系。我对这个领域很陌生,所以我不确定如何有效地提取列值。如何以更有效的方式执行相同的逻辑?

我打算在我的代码中实现这个

val arr = Array("post_domain", "post_country", "post_geo_city", "post_geo_region")

arr.foreach(column => {
    // expected Map
    val ex = expected.get(column).get
    val actual = hiveQueryObj.select(column).collectAsList().get(0).get(0).toString
    assert(actual.equals(ex))
}

0 个答案:

没有答案