我正在使用Presto REST api查询数据库,但我的所有会话似乎都是短暂的。例如,如果我做一些类似的事情
query_presto('set session columnar_processing = true')
query_presto('show session')
尽管在第一个查询中设置了column_processing变量,但第二个查询将显示column_procession仍然是默认值false。
我在某处读到
Presto为每个经过身份验证的用户维护会话。本次会议如果在超时期内未收到新请求,则过期为Presto配置。
但是,我在代码和文档中都找不到这种配置。
我的问题是如何使用RESTful API维护数据库会话?
经过太多时间的挖掘,我发现有一个标题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没有办法记住之前执行中设置的会话变量。我必须在程序中本地缓存它们,并在每次执行时都将它们全部传递。