PXF JSON 插件错误

Posted

技术标签:

【中文标题】PXF JSON 插件错误【英文标题】:PXF JSON plugin error 【发布时间】:2016-07-14 09:52:21 【问题描述】:

使用 HDP 2.4 和 HAWQ 2.0

想要将保存在HDFS路径中的json数据读入HAWQ外部表中?

按照以下步骤将新的 json 插件添加到 PXF 中并读取数据。

    从以下位置下载插件“json-pxf-ext-3.0.1.0-1.jar” https://bintray.com/big-data/maven/pxf-plugins/view#

    将插件复制到路径/usr/lib/pxf。

    创建外部表

    创建外部表 ext_json_mytestfile ( created_at TEXT, id_str TEXT, text TEXT, source TEXT, "user.id" INTEGER, “user.location”文本, “坐标。类型”文本, "coordinates.coordinates[0]" 双精度, “coordinates.coordinates[1]” 双精度) 位置('pxf://localhost:51200/tmp/hawq_test.json' '?FRAGMENTER=org.apache.hawq.pxf.plugins.hdfs.HdfsDataFragmenter' '&ACCESSOR=org.apache.hawq.pxf.plugins.json.JsonAccessor' '&RESOLVER=org.apache.hawq.pxf.plugins.json.JsonResolver' '&ANALYZER=org.apache.hawq.pxf.plugins.hdfs.HdfsAnalyzer') 格式化“自定义”(格式化=“pxfwritable_import”) 将错误记录到 err_json_mytestfile 段拒绝限制 10 行;

当执行上述DDL表创建成功时。之后尝试执行选择查询

select * from ext_json_mytestfile;

但出现错误:-

ERROR: remote component error (500) from 'localhost:51200': type Exception report message java.lang.ClassNotFoundException: org.apache.hawq.pxf.plugins.json.JsonAccessor description 服务器遇到内部错误阻止它从满足这个要求。异常 javax.servlet.ServletException: java.lang.ClassNotFoundException: org.apache.hawq.pxf.plugins.json.JsonAccessor (libchurl.c:878) (seg4 sandbox.hortonworks.com:40000 pid=117710) (dispatcher.c :1801) 详情:外部表 ext_json_mytestfile

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

似乎引用的 jar 文件的旧包名称为 com.pivotal.*。 JSON PXF 扩展仍在孵化中,jar pxf-json-3.0.0.jar 是为 JDK 1.7 构建的,因为单节点 HDB VM 使用 JDK 1.7 并上传到 Dropbox。

https://www.dropbox.com/s/9ljnv7jiin866mp/pxf-json-3.0.0.jar?dl=0

回显上述 cmets 的详细信息,以便正确执行步骤以确保 PXF 服务识别 jar 文件。以下步骤假设 Hawq/HDB 由 Ambari 管理。如果没有,之前更新中提到的手动步骤应该可以工作。

    将 pxf-json-3.0.0.jar 复制到所有 HAWQ 节点(主节点和段)的 /usr/lib/pxf/。

    在 Ambari 管理的 PXF 中,通过 Ambari Admin -> PXF -> Advanced pxf-public-classpath 添加以下行

/usr/lib/pxf/pxf-json-3.0.0.jar

    在 Ambari 管理的 PXF 中,通过 Ambari Admin -> PXF -> Advanced pxf-profiles 将此 sn-p 添加到最后的 pxf 配置文件 xml 中

<profile>
  <name>Json</name>
  <description>
    JSON Accessor</description>
  <plugins>
    <fragmenter>org.apache.hawq.pxf.plugins.hdfs.HdfsDataFragmenter</fragmenter>
    <accessor>org.apache.hawq.pxf.plugins.json.JsonAccessor</accessor>
    <resolver>org.apache.hawq.pxf.plugins.json.JsonResolver</resolver>
  </plugins>
</profile>
    通过 Ambari 重启 PXF 服务

【讨论】:

【参考方案2】:

您是否将 jar 文件位置添加到 /etc//conf/pxf-public.classpath 中?

【讨论】:

【参考方案3】:

你试过了吗:

将 PXF JSON jar 文件复制到 /usr/lib/pxf 更新 /etc/pxf/conf/pxf-profiles.xml 以包含 Json 插件配置文件(如果尚未存在) (根据上述评论)更新 /etc/pxf/conf/pxf-public.classpath 通过 Ambari 或命令行重启 PXF 服务(sudo service pxf-service restart)

【讨论】:

是的,我完成了上述所有步骤。【参考方案4】:

可能没有在类路径中添加 json jar。 创建外部表 DDL 将始终成功,因为它只是一个定义。 只有当您运行查询时,HAWQ 才会检查运行时 jar 依赖项。

【讨论】:

【参考方案5】:

是的,来自https://bintray.com/big-data/maven/pxf-plugins/view# 的 jar json-pxf-ext-3.0.1.0-1.jar" 的旧包名称为 com.pivotal.*。之前的更新已编辑详细信息以从 Dropbox 下载正确的 jar

【讨论】:

以上是关于PXF JSON 插件错误的主要内容,如果未能解决你的问题,请参考以下文章

Greenplum pxf 连接hadoop

错误:在插件“@sanity/base”中找不到“sanity.json”文件

struts2的json插件导致数据返回到页面时发生懒加载错误。

vscode 中的beautify 插件怎么用

模块构建失败:错误:检测到重复的插件/预设

错误“模块根文件夹中缺少文件 google-services.json。没有它,Google 服务插件无法运行”[重复]