如何使用 REST API 管理 Presto 查询会话变量?
How to manage Presto query session variables using REST API?
我正在使用 Presto REST api 查询数据库,但我的所有会话似乎都是短暂的。例如,如果我做类似
query_presto('set session columnar_processing = true')
query_presto('show session')
尽管在第一个查询中设置了 column_processing 变量,但第二个查询将显示 column_processing 仍然是默认值 false。
我在某处读到
Presto maintains sessions for each authenticated user. This session
expires if no new requests are received within the timeout period
configured for Presto.
但是,我在代码和文档中的任何地方都找不到此配置。
我的问题是如何使用 RESTful API 维护数据库会话?
经过太多时间挖掘,我发现有一个 header 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 没有办法记住之前执行中设置的 session 变量。我必须将它们本地缓存在我的程序中,并在每次执行时将它们全部传递。
我正在使用 Presto REST api 查询数据库,但我的所有会话似乎都是短暂的。例如,如果我做类似
query_presto('set session columnar_processing = true')
query_presto('show session')
尽管在第一个查询中设置了 column_processing 变量,但第二个查询将显示 column_processing 仍然是默认值 false。
我在某处读到
Presto maintains sessions for each authenticated user. This session expires if no new requests are received within the timeout period configured for Presto.
但是,我在代码和文档中的任何地方都找不到此配置。
我的问题是如何使用 RESTful API 维护数据库会话?
经过太多时间挖掘,我发现有一个 header 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 没有办法记住之前执行中设置的 session 变量。我必须将它们本地缓存在我的程序中,并在每次执行时将它们全部传递。