如何在 Apache Drill 中从 REST 客户端传递访问令牌?
How to pass access tokens from REST client in Apache Drill?
我已经安装了 Apache Drill,创建了 http 存储插件并将其配置设置如下:
{
"type": "http",
"cacheResults": false,
"connections": {
"accounts": {
"url": "https://my.datasource.url",
"method": "GET",
"headers": {
"Authorization": "Bearer access_token...",
"Accept": "application/json"
},
"authType": "none",
"userName": null,
"password": null,
"postBody": null,
"params": null,
"dataPath": "QueryResponse/Account",
"requireTail": false,
"inputType": "json"
}
},
"timeout": 0,
"proxyHost": null,
"proxyPort": 0,
"proxyType": "direct",
"proxyUsername": null,
"proxyPassword": null,
"enabled": true
}
我可以 运行 通过 rest 调用(以及来自网络 ui 和 odbc)进行查询,如下所示:
{
"queryType": "SQL",
"query": "select * from myds.accounts"
}
问题是,访问令牌是短暂的,多个用户需要使用他们自己的访问令牌访问这些数据源,因此使用连接保存令牌对我来说不起作用。
有什么办法可以在发送查询时从客户端发送访问令牌吗?我不喜欢使用 Rest API 或 ODBC,就解决我的问题而言,它们中的任何一个都很好。谢谢
它可能可以在查询时指定一些配置。下面的示例演示了在文件系统插件中如何使用 table()
函数在运行时更改配置选项。在这种情况下,我们在 excel 文件中指定要查询的 sheet。
SELECT *
FROM table(dfs.`excel/test_data.xlsx` (type => 'excel', sheetName =>'secondSheet'))
我不知道这是否适用于 REST 插件,但值得一试。 (不可否认,这有点骇人听闻)
另一个需要修改插件的选项是创建可以在查询时指定的特殊变量。例如,我们可以创建一个 _headers
变量,这样您就可以在查询时将项目插入到 headers 中。因此,查询可能如下所示:
SELECT...
FROM ...
WHERE _headers="Authorization=1234"
我真的很想知道完成此任务的最佳方法是什么。我相信您不是唯一遇到此问题的人。
我已经安装了 Apache Drill,创建了 http 存储插件并将其配置设置如下:
{
"type": "http",
"cacheResults": false,
"connections": {
"accounts": {
"url": "https://my.datasource.url",
"method": "GET",
"headers": {
"Authorization": "Bearer access_token...",
"Accept": "application/json"
},
"authType": "none",
"userName": null,
"password": null,
"postBody": null,
"params": null,
"dataPath": "QueryResponse/Account",
"requireTail": false,
"inputType": "json"
}
},
"timeout": 0,
"proxyHost": null,
"proxyPort": 0,
"proxyType": "direct",
"proxyUsername": null,
"proxyPassword": null,
"enabled": true
}
我可以 运行 通过 rest 调用(以及来自网络 ui 和 odbc)进行查询,如下所示:
{
"queryType": "SQL",
"query": "select * from myds.accounts"
}
问题是,访问令牌是短暂的,多个用户需要使用他们自己的访问令牌访问这些数据源,因此使用连接保存令牌对我来说不起作用。
有什么办法可以在发送查询时从客户端发送访问令牌吗?我不喜欢使用 Rest API 或 ODBC,就解决我的问题而言,它们中的任何一个都很好。谢谢
它可能可以在查询时指定一些配置。下面的示例演示了在文件系统插件中如何使用 table()
函数在运行时更改配置选项。在这种情况下,我们在 excel 文件中指定要查询的 sheet。
SELECT *
FROM table(dfs.`excel/test_data.xlsx` (type => 'excel', sheetName =>'secondSheet'))
我不知道这是否适用于 REST 插件,但值得一试。 (不可否认,这有点骇人听闻)
另一个需要修改插件的选项是创建可以在查询时指定的特殊变量。例如,我们可以创建一个 _headers
变量,这样您就可以在查询时将项目插入到 headers 中。因此,查询可能如下所示:
SELECT...
FROM ...
WHERE _headers="Authorization=1234"
我真的很想知道完成此任务的最佳方法是什么。我相信您不是唯一遇到此问题的人。