我正在通过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))
}