首页 > 解决方案 > 无法构造`org.apache.drill.exec.server.rest.QueryWrapper`的实例

问题描述

我在嵌入式模式下运行 Apache Drill 开箱即用。

当我向 发送 POST 请求时localhost:8047/query.json,它会产生 400 错误:

Cannot construct instance of `org.apache.drill.exec.server.rest.QueryWrapper`, problem: null
 at [Source: (org.glassfish.jersey.message.internal.EntityInputStream); line: 4, column: 1]

要求:

{
    "QueryType": "SQL",
    "Query": "SELECT count(*) as `cnt` FROM  dfs.`/data/demo/Parquet/*.parquet`"
}

Content-Type: application/json

在分布式模式下运行时也会发生这种情况。通过 Web 界面运行查询似乎没问题...

根据谷歌,我是唯一一个有这个错误的人。有任何想法吗?

标签: apache-drill

解决方案


请求中有一个愚蠢的错误。请求中的字段必须是camelCase,而不是 QueryType 而是queryType。由于错误的序列化程序设置,先前的请求中有大写的“Q”。

我一个小时都没有注意到这个细节。

这有效:

{
    "queryType": "SQL",
    "query": "SELECT count(*) as `cnt` FROM  dfs.`/data/demo/Parquet/*.parquet`"
}

如果 API 返回一个像 "queryType is missing" 而不是 enigmatic 的正常错误,那就太好了Cannot construct instance of org.apache.drill.exec.server.rest.QueryWrapper

希望这可以节省一个小时的生命。


推荐阅读