phoenix 启动报错

本文记录了使用 sqlline.py 连接 Phoenix on HBase 时遇到的 NullPointerException 异常,通过调整 Hadoop 的本地库路径配置解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[root@hbase1 bin]# ./sqlline.py hbase2:2181
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:hbase2:2181 none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:hbase2:2181
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/local/phoenix/phoenix-4.12.0-HBase-1.1-client.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
17/10/24 16:32:57 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Error: java.lang.RuntimeException: java.lang.NullPointerException (state=,code=0)
java.sql.SQLException: java.lang.RuntimeException: java.lang.NullPointerException
    at org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:2454)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:2360)
    at org.apache.phoenix.util.PhoenixContextExecutor.call(PhoenixContextExecutor.java:76)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl.init(ConnectionQueryServicesImpl.java:2360)
    at org.apache.phoenix.jdbc.PhoenixDriver.getConnectionQueryServices(PhoenixDriver.java:255)
    at org.apache.phoenix.jdbc.PhoenixEmbeddedDriver.createConnection(PhoenixEmbeddedDriver.java:150)
    at org.apache.phoenix.jdbc.PhoenixDriver.connect(PhoenixDriver.java:221)
    at sqlline.DatabaseConnection.connect(DatabaseConnection.java:157)
    at sqlline.DatabaseConnection.getConnection(DatabaseConnection.java:203)
    at sqlline.Commands.connect(Commands.java:1064)
    at sqlline.Commands.connect(Commands.java:996)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sqlline.ReflectiveCommandHandler.execute(ReflectiveCommandHandler.java:38)
    at sqlline.SqlLine.dispatch(SqlLine.java:809)
    at sqlline.SqlLine.initArgs(SqlLine.java:588)
    at sqlline.SqlLine.begin(SqlLine.java:661)
    at sqlline.SqlLine.start(SqlLine.java:398)
    at sqlline.SqlLine.main(SqlLine.java:291)
Caused by: java.lang.RuntimeException: java.lang.NullPointerException
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:218)
    at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:327)
    at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:302)
    at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:167)
    at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:162)
    at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:797)
    at org.apache.hadoop.hbase.MetaTableAccessor.fullScan(MetaTableAccessor.java:602)
    at org.apache.hadoop.hbase.MetaTableAccessor.tableExists(MetaTableAccessor.java:366)
    at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:403)
    at org.apache.phoenix.query.ConnectionQueryServicesImpl$12.call(ConnectionQueryServicesImpl.java:2388)
    ... 20 more
Caused by: java.lang.NullPointerException
    at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.getMetaReplicaNodes(ZooKeeperWatcher.java:463)
    at org.apache.hadoop.hbase.zookeeper.MetaTableLocator.blockUntilAvailable(MetaTableLocator.java:561)
    at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:61)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateMeta(ConnectionManager.java:1186)
    at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1153)
    at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:300)
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:156)
    at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:60)
    at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:210)
    ... 29 more
sqlline version 1.2.0
0: jdbc:phoenix:hbase2:2181> 

 

在 /etc/profile 中加入

export HADOOP_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS=‘-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_LIB_NATIVE_DIR’
 
source /etc/profile

转载于:https://www.cnblogs.com/fangyuan303687320/p/7721802.html

### PyCharm 启动报错 `migrate.config` 的解决方案 当遇到 PyCharm 启动时与 `migrate.config` 相关的错误,通常是因为配置文件路径不正确或模块未被 Python 正确识别。以下是详细的排查和解决方法: #### 1. 检查项目结构和配置文件位置 确保项目的目录结构合理,并且配置文件位于预期的位置。如果使用的是 Django 项目,则应确认 `manage.py` 和 `settings.py` 文件所在的路径是否已加入到系统的 `PYTHONPATH` 中[^1]。 #### 2. 验证虚拟环境设置 在 PyCharm 中打开项目前,请先激活对应的虚拟环境。可以通过以下方式验证当前使用的解释器是否为所需的虚拟环境: ```bash which python ``` 对于 Windows 用户,在命令提示符下输入: ```cmd where python ``` 这有助于排除因不同版本冲突而引起的导入问题[^2]。 #### 3. 安装缺失依赖项 有时会因为缺少某些必要的库而导致无法找到特定模块。尝试重新安装所有依赖包来修复潜在的问题: ```bash pip install -r requirements.txt ``` 如果有自定义的应用程序(如通过 `startapp` 创建),也需要确保其包含在 `INSTALLED_APPS` 列表里。 #### 4. 修改配置参数一致性 针对 HBase + Phoenix 这样的分布式数据库系统,客户端和服务端之间的配置需要保持一致。特别是像 `phoenix.schema.isNamespaceMappingEnabled` 这样影响命名空间映射行为的关键属性,必须保证两端都采用相同的设定值[^3]。 #### 5. 清理缓存并重启 IDE 最后一步可以考虑清理本地编译缓存以及IDE本身的临时数据后再试一次: - 关闭 PyCharm; - 删除 `.idea/` 文件夹下的 cache 文件; - 移除 build/dist 等生成物所在目录; - 重新启动 PyCharm 并运行迁移操作。 以上措施应该能够帮助定位并解决问题根源,使应用程序恢复正常工作状态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值