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

使用 HDP 2.4 和 HAWQ 2.0

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

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

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

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

  3. 创建外部表

    创建外部表 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

任何帮助将不胜感激。

【问题讨论】:

    标签: hortonworks-data-platform greenplum hawq


    【解决方案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 管理。如果没有,之前更新中提到的手动步骤应该可以工作。

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

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

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

    1. 在 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>
    1. 通过 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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2014-08-19
            • 1970-01-01
            • 2014-05-17
            • 2015-10-27
            • 2020-01-29
            • 2014-10-14
            • 2013-06-09
            相关资源
            最近更新 更多