Presto查询Pinot表时触发PINOT_UNABLE_TO_FIND_BROKER错误:无可用Broker问题排查求助
Let's break down why you can see metadata (catalogs, schemas, tables) but can't run SELECT queries, and walk through the fixes I've used for this exact issue:
1. The Pinot Controller is returning unreachable Broker addresses
Presto relies on the Pinot Controller to fetch the list of active Brokers for query routing. If your Pinot Broker is configured to report a hostname or localhost instead of the accessible IP (10.184.160.52), the Presto server won't be able to resolve or reach it.
Fix steps:
- Check your Pinot Broker's configuration file (
pinot-broker.conf) for thepinot.broker.hostsetting. Make sure it's set to10.184.160.52(notlocalhostor a hostname the Presto server can't resolve). - If you need to keep using a hostname, add an entry to
/etc/hostson your Presto server (10.184.160.53) mapping the Broker's hostname to10.184.160.52.
2. Your Presto Pinot Connector isn't explicitly configured to use the Broker
By default, Presto pulls Broker info from the Controller, but sometimes this flow breaks (even when metadata works). You can bypass this by hardcoding the Broker address in your Presto catalog config.
Fix steps:
- Edit your
presto/etc/catalog/pinot.propertiesfile to add this line:pinot.broker-urls=10.184.160.52:8000 - Restart the Presto service with
bin/launcher restartand test your SELECT query again. This forces Presto to use the specified Broker directly instead of querying the Controller for it.
3. The Pinot Broker isn't online or reachable
Even if metadata loads, the Broker might be offline or not properly registered with the Controller.
Fix steps:
- Verify the Broker's health by accessing
http://10.184.160.52:8000/healthfrom the Presto server (usecurlor a browser if you have access). You should get a healthy response. - Check the Pinot Controller UI (
http://10.184.160.52:9000) to confirm the Broker is listed asOnlineunder the Brokers tab. If it's offline, restart the Pinot Broker service.
4. The test table isn't assigned to any active Broker
Occasionally, a Pinot table might not have any Brokers assigned to handle queries for it, even if the Broker itself is online.
Fix steps:
- In the Pinot Controller UI, navigate to the
testtable's details page. Check the "Brokers" section to ensure at least one active Broker is assigned. - If no Brokers are listed, try reloading the table or restarting the Pinot Controller to trigger a re-assignment.
After trying these fixes, run a small test query like SELECT * FROM test LIMIT 10 to confirm it works. If you're still stuck, check the Presto logs again to see what Broker address the Controller is returning—this will help narrow down if the issue is with address resolution or availability.
内容的提问来源于stack exchange,提问作者Sonu

