无法通过PXF查询外部表

时间:2019-05-15 11:51:34

标签: greenplum

我制作了一个GPDB(greenplum-db-5.18.0)群集,其中包含一个主节点和3个段主机。然后遵循此link,我配置了kerberos和hdfs核心xml,并成功启动了PXF服务。当我运行指向远程hdfs文件的查询时,它会不断给出错误日志,如:

SEVERE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
java.lang.VerifyError: Bad return type
Exception Details:
  Location:
    org/apache/hadoop/hdfs/DFSClient.getQuotaUsage(Ljava/lang/String;)Lorg/apache/hadoop/fs/QuotaUsage; @160: areturn
  Reason:
    Type 'org/apache/hadoop/fs/ContentSummary' (current frame, stack[0]) is not assignable to 'org/apache/hadoop/fs/QuotaUsage' (from method signature)
  Current Frame:
    bci: @160
    flags: { }
    locals: { 'org/apache/hadoop/hdfs/DFSClient', 'java/lang/String', 'org/apache/hadoop/ipc/RemoteException', 'java/io/IOException' }

PXF服务从openjdk 1.8.0_131开始。而且我们的hdfs集群基于hadoop mdh 2.6.0.4,因此我将hadoop- * 2.6.0-mdh2.6.0.4.jar放入$ PXF_CONF / lib,而GPDB 5.18本身基于hadoop 2.8.5。这个错误有冲突吗?

我发现一个类似的错误但没有明确的解决方案:Exception in thread "main" java.lang.VerifyError: Bad type on operand stack

顺便说一句,使用PXF访问hdfs文件还有其他事情,例如通过gpconfig设置HADOOP VERSION,这在指南文档中没有提到。

2 个答案:

答案 0 :(得分:1)

PXF与Cloudera,Hortonworks Data Platform,MapR和通用Apache Hadoop发行版兼容。 Microsoft的(Microsoft Hadoop发行版(MDH))不在发行说明之内。

https://gpdb.docs.pivotal.io/5180/pxf/client_instcfg.html

答案 1 :(得分:0)

尝试清除$ PXF_CONF / lib文件夹。通常,我们提供的库足以连接到大多数hadoop发行版。我建议您尝试以下操作:

$ rm -rf $PXF_CONF/lib/*
$ $PXF_HOME/bin/pxf restart

如果在多节点群集上,则需要在每个段主机上从$ PXF_CONF / lib /中手动删除jar文件,然后重新启动PXF群集。