gpt4 book ai didi

java - 无法通过phoenix从hbase上的现有表读取数据

转载 作者:太空宇宙 更新时间:2023-11-04 09:42:45 24 4
gpt4 key购买 nike

通过phoenix使用java查询Hbase时,遇到以下问题:我的连接正常,因此我使用以下查询从 SYSTEM.CATALOG 获取所有数据:

SELECT * FROM SYSTEM.CATALOG

它给我的结果是:

TENANT_ID TABLE_SCHEM TABLE_NAME ...

null DEVLOCAL BASE_COMMENTS ...
null SYSTEM CATALOG ...
null g edges ...
null g messages ...
...

我猜 g.edge 确实存在,所以我尝试:

Select * from g.edges

问题从这里开始:

Exception in thread "main" org.apache.phoenix.schema.TableNotFoundException: ERROR 1012 (42M03): Table undefined. tableName=G.EDGES
at org.apache.phoenix.query.ConnectionQueryServicesImpl.getAllTableRegions(ConnectionQueryServicesImpl.java:575)
at org.apache.phoenix.iterate.DefaultParallelScanGrouper.getRegionBoundaries(DefaultParallelScanGrouper.java:72)
at org.apache.phoenix.iterate.BaseResultIterators.getRegionBoundaries(BaseResultIterators.java:529)
at org.apache.phoenix.iterate.BaseResultIterators.getParallelScans(BaseResultIterators.java:696)
at org.apache.phoenix.iterate.BaseResultIterators.getParallelScans(BaseResultIterators.java:627)
at org.apache.phoenix.iterate.BaseResultIterators.<init>(BaseResultIterators.java:499)
at org.apache.phoenix.iterate.ParallelIterators.<init>(ParallelIterators.java:62)
at org.apache.phoenix.execute.ScanPlan.newIterator(ScanPlan.java:242)
at org.apache.phoenix.execute.BaseQueryPlan.iterator(BaseQueryPlan.java:351)
at org.apache.phoenix.execute.BaseQueryPlan.iterator(BaseQueryPlan.java:212)
at org.apache.phoenix.execute.BaseQueryPlan.iterator(BaseQueryPlan.java:207)
at org.apache.phoenix.execute.BaseQueryPlan.iterator(BaseQueryPlan.java:202)
at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:310)
at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:290)
at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:289)
at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:283)
at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:1706)
at HbaseDataProvider.query(HbaseDataProvider.java:29)
at Main.main(Main.java:10)

...G.EDGES 不存在。我尝试了“g”。“edges”不是大写,但仍然给我这样的错误如果我误解了什么,请给我一个想法或告诉我。谢谢!

最佳答案

哦,我解决了我的问题。那是因为缺少凤凰造成的。实际上,apache phoenix 不会自动从 hbase 同步其元数据,因此如果您有使用 hbase shell 创建的表,您首先必须在 phoenix 中创建具有相同表名、架构名称的表,以便 phoenix 可以从 hbase 同步元数据。我的错是我没有仔细阅读文档。这是引用:https://phoenix.apache.org/faq.html

关于java - 无法通过phoenix从hbase上的现有表读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55775937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com