如何使用 REST API 管理 Presto 查询会话变量?

won*_*ton 3 rest session presto

我正在使用 Presto REST api 来查询数据库,但我所有的会话似乎都是短暂的。例如,如果我做类似的事情

query_presto('set session columnar_processing = true') query_presto('show session')

尽管在第一个查询中设置了 column_processing 变量,第二个查询将显示 column_processing 仍然是默认值 false。

我在某处读到

Presto 为每个经过身份验证的用户维护会话。如果在为 Presto 配置的超时期限内未收到新请求,则此会话将过期。

但是,我在代码或文档中的任何地方都找不到此配置。

我的问题是如何使用 RESTful API 维护数据库会话?

won*_*ton 8

经过太多时间的挖掘,我发现有一个标题X-Presto-Session可以设置逗号分隔的变量,即

curl --data "show session" http://127.0.0.1:8889/v1/statement/ --header "X-Presto-User: myuser" --header "X-Presto-Schema: myschema" --header "X-Presto-Time-Zone: UTC" --header "X-Presto-Catalog: mycatalog" --header "User-Agent: myagent" --header "X-Presto-Session: session_variable_1=900,session_variable_2=true"

不管文档怎么说,我认为 Presto 没有办法记住之前执行中设置的会话变量。我必须在我的程序中本地缓存它们并在每次执行时传递它们。