使用phoenix处理程序创建配置单元表抛出noclassdeffounderror:org.apache.hadoop.hbase.security.securityinfo

dldeef67  于 2021-07-13  发布在  Hadoop
关注(0)|答案(1)|浏览(836)

我想在emr中的phoenix表的顶部创建hive表。
我正面临一场灾难 NoClassDefFoundError: org.apache.hadoop.hbase.security.SecurityInfo 到目前为止我所做的:
我听从了老师的指示https://phoenix.apache.org/hive_storage_handler.html 并补充道 phoenix-hive-5.0.0-HBase-2.0.jarhive-env.sh 以及在 hive-site.xml .
已重新启动配置单元服务 systemctl restart hive-server2.service 重新启动元存储 systemctl restart hive-hcatalog-server.service 已从以下位置执行create table命令:

create external table ext_table (
  i1 int,
  s1 string,
  f1 float,
  d1 decimal
)
STORED BY 'org.apache.phoenix.hive.PhoenixStorageHandler'
TBLPROPERTIES (
  "phoenix.table.name" = "ext_table",
  "phoenix.zookeeper.quorum" = "localhost",
  "phoenix.zookeeper.znode.parent" = "/hbase",
  "phoenix.zookeeper.client.port" = "2181",
  "phoenix.rowkeys" = "i1",
  "phoenix.column.mapping" = "i1:i1, s1:s1, f1:f1, d1:d1"
);

有个例外: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.security.SecurityInfo) 我正在使用emr-6.1.0
hbase 2.2.5版
Phoenix城5.0.0
Hive3.1.2
有人知道问题出在哪里吗?

更新

我按照@leftjoin的建议使用 ADD JAR 从色调添加PhoenixHivejar到类路径。然后我遇到了由我使用的phoenix hive连接器引起的jar兼容性问题: phoenix-hive-5.0.0-HBase-2.0.jar .
phoenix连接器的较新版本没有归档到可从phoenix网站下载的单个捆绑包中。相反,连接器现在位于github repo中。
我构建了新的phoenix配置单元连接器(版本:phoenix->5.1.0、hive->3.1.2、hbase->2.2),并使用它创建配置单元表。
因此,我得到了另一个异常,我无法修复:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org/apache/phoenix/compat/hbase/CompatSteppingSplitPolicy

我认为这仍然与依赖性问题有关。但不知道到底是什么。

neekobn8

neekobn81#

作为一种解决方法,将jar放入hdfs并执行 ADD JAR 创建表和查询前的命令:

ADD JAR hdfs://path/to/your/jar/phoenix-hive-5.0.0-HBase-2.0.jar;

相关问题