pinot查询数据

pinot查询主要从下面几个方式操作

1、从controller界面去查询

2、pinot脚本查询(因为查询需要通过broker,所以端口为broker的端口)

./pinot-admin.sh PostQuery -brokerPort 8000 -query "select count(*) from transcript"

3、curl命令进行查询

curl -X POST -d '{"pql":"select count(*) from baseballStats"}' http://localhost:8000/query

4、java的api进行查询

Pinot的clientAPI与JDBC类似,但由于Pinot的行为方式不同,所以存在一些差异。例如,具有多个聚合函数的查询将为每个聚合函数返回一个结果集,因为它们是并行计算的。

使用ConnectionFactory类的实用程序方法创建到Pinot的连接,以创建到给定Zookeeper URL、Java属性对象或要连接的代理地址列表的Pinot集群的连接。

Connection connection = ConnectionFactory.fromZookeeper
  ("some-zookeeper-server:2191/zookeeperPath");

Connection connection = ConnectionFactory.fromProperties("demo.properties");

Connection connection = ConnectionFactory.fromHostList
  ("some-server:1234", "some-other-server:1234", ...);

Connection.execute(java.lang.String)和Connection. executeasync (java.lang.String)连接方法将查询直接发送到Pinot集群。

ResultSetGroup resultSetGroup = connection.execute("select * from foo...");Future<ResultSetGroup> futureResultSetGroup = connection.executeAsync
  ("select * from foo...");

查询也可以使用PreparedStatement来转义查询参数:

("select * from foo where a = ?");statement.setString(1, "bar");
ResultSetGroup resultSetGroup = statement.execute();Future<ResultSetGroup> futureResultSetGroup = statement.executeAsync();

在选择查询的情况下,可以使用第一个ResultSet中的各种get方法获得结果,这些方法是通过getResultSet(int)方法获得的:

ResultSet resultSet = connection.execute
  ("select foo, bar from baz where quux = 'quuux'").getResultSet(0);

for (int i = 0; i < resultSet.getRowCount(); ++i) {
  System.out.println("foo: " + resultSet.getString(i, 0));
  System.out.println("bar: " + resultSet.getInt(i, 1));}

resultSet.close();

在聚合的情况下,每个聚合函数都在自己的ResultSet中:

ResultSetGroup resultSetGroup = connection.execute("select count(*) from foo");

ResultSet resultSet = resultSetGroup.getResultSet(0);System.out.println("Number of records: " + resultSet.getInt(0));resultSet.close();

可以有多个ResultSet,每个ResultSet可以包含按组键分组的多个结果。

ResultSetGroup resultSetGroup = connection.execute
    ("select min(foo), max(foo) from bar group by baz");

System.out.println("Number of result groups:" +
    resultSetGroup.getResultSetCount(); // 2, min(foo) and max(foo)

ResultSet minResultSet = resultSetGroup.getResultSet(0);for(int i = 0; i < minResultSet.length(); ++i) {
    System.out.println("Minimum foo for " + minResultSet.getGroupKeyString(i, 1) +
        ": " + minResultSet.getInt(i));}

ResultSet maxResultSet = resultSetGroup.getResultSet(1);for(int i = 0; i < maxResultSet.length(); ++i) {
    System.out.println("Maximum foo for " + maxResultSet.getGroupKeyString(i, 1) +
        ": " + maxResultSet.getInt(i));}

resultSet.close();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一杯咖啡半杯糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值