PXF JSON插件错误

时间:2016-07-14 09:52:21

标签: hortonworks-data-platform greenplum hawq

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

    CREATE EXTERNAL TABLE ext_json_mytestfile(created_at TEXT, id_str TEXT,text TEXT,source TEXT," user.id"整数, " user.location"文本, " coordinates.type"文本, " coordinates.coordinates [0]"双精度, " coordinates.coordinates [1]"双精度) LOCATION(' pxf:// localhost:51200 / tmp / hawq_test.json' '分段器= org.apache.hawq.pxf.plugins.hdfs.HdfsDataFragmenter' '&安培;访问器= org.apache.hawq.pxf.plugins.json.JsonAccessor' '&安培; RESOLVER = org.apache.hawq.pxf.plugins.json.JsonResolver' '&安培; ANALYZER = org.apache.hawq.pxf.plugins.hdfs.HdfsAnalyzer') 格式'定制' (FORMATTER =' pxfwritable_import') LOG ERRORS INTO err_json_mytestfile SEGMENT REJECT LIMIT 10 ROWS;

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

    select * from ext_json_mytestfile;
    

    但是得到错误: -

    错误:远程组件错误(500)来自' localhost:51200':类型异常报告消息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) DETAIL:外部表ext_json_mytestfile

    非常感谢任何帮助。

5 个答案:

答案 0 :(得分: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

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

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

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

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

    1. 在Ambari托管的PXF中,最后通过Ambari Admin - >将此片段添加到您的pxf个人资料xml中。 PXF - >高级pxf-profiles
    2. <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服务

答案 1 :(得分:0)

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

答案 2 :(得分:0)

你有没有尝试过:

  • 将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)

答案 3 :(得分:0)

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

答案 4 :(得分:0)

是的,jar json-pxf-ext-3.0.1.0-1.jar&#34;来自https://bintray.com/big-data/maven/pxf-plugins/view#的旧包名称为com.pivotal。*。上一次更新已编辑,详细信息从dropbox下载正确的jar