【问题标题】:Hive Query failingHive 查询失败
【发布时间】:2021-11-10 14:46:34
【问题描述】:

我已将配置单元查询设置为每天在作业上运行,今天是第一天运行它对我来说失败了。根据我的设置,我没有看到我在哪里出错了。

fun getFlightStatus(date: LocalDate, flightstatuses: List< flightstatus>): Set<Alert> {
    val flightstatusesString = flightstatuses.joinToString(prefix = "(", postfix = ")", transform = { "'$it'" })
 val query =
        """select passengerID, flightstatus, partition_date from(
           |select distinct $flightTable.passengerID, $flightTable.flightstatus, $flightTable.partition_date
           |from $flightTable
           |where $flightTable.flightstatus in $flightstatusesString and $flightTable.partition_date = Date('$date')
           |)""".trimMargin()

    return hiveTemplate.execute(customCallback(query) { resultSet -> resultSet.toAlert() })
        .also { logger.info("<<< flights.getFlightStatus($date, $statuses)") }.toSet()
}

【问题讨论】:

    标签: sql kotlin hadoop hive


    【解决方案1】:

    Hive 中的子查询应该有一个别名。

    select ... from (select ....) s --here s is an alias
    

    【讨论】:

    • 我不想要任何子查询。我只想获取passengerID、flightstatus、partition_date
    • 如果您不想要子查询,请以某种方式将其删除。但是现在有一个没有别名的子查询select from (select ) 。还要检查变量名 $statusString
    • val query = """select distinct $flightTable.passengerID, $flightTable.flightstatus, $flightTable.partition_date from( |from $flightTable |where $flightTable.flightstatus in $flightstatusesString and $flightTable.partition_date = Date('$date') |)""".trimMargin() 是我现在拥有的,但我有两个来自。有什么例子可以链接我吗?
    • @AnthonyEdwardsStan 正如我已经说过的,您的查询包含一个没有别名的子查询。别名是强制性的。这是您的子查询: ( |from $flightTable |where $flightTable.flightstatus in $flightstatusesString and $flightTable.partition_date = Date('$date') |) 在它之后添加别名: ( |from $flightTable |where $flightTable.flightstatus在 $flightstatusesString 和 $flightTable.partition_date = Date('$date') |) s
    • 我删除了子查询,因为我只在一个我认为不需要的表中工作。
    猜你喜欢
    • 2017-08-17
    • 2023-03-18
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多