apache-drill - 无法构造`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 界面运行查询似乎没问题...
根据谷歌,我是唯一一个有这个错误的人。有任何想法吗?
解决方案
请求中有一个愚蠢的错误。请求中的字段必须是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
。
希望这可以节省一个小时的生命。
推荐阅读
- javascript - 有没有办法显示进入屏幕时打开的中间单选按钮?
- azure - 嵌套虚拟化无法在 Azure VM 上运行
- python - Tensorflows 对象检测 API 是否会产生不正确的 ymin 和 ymax 边界框坐标?
- azure - Azure VM 共享存储帐户权限
- javascript - 如何在 Webpack 中使用代码拆分来自定义输出?
- python - 将嵌套字典的键转换为大写
- javascript - Chrome V80 功能将被弃用
- python - 向 PostgreSQL 插入元组的问题
- java - 如何检查文件是否存在只知道文件名?
- mysql - 是否可以重新排列mysql中表的索引顺序?