hortonworks 数据平台 - PXF JSON 插件错误



使用 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文本,id_str文本、文本文本、源文本、"user.id"整数,"用户位置"文本,"坐标类型"文本,"坐标.坐标[0]" 双精度,"坐标.坐标[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;

但是收到错误: -

错误:

来自"localhost:51200"的远程组件错误 (500):键入异常报告消息 java.lang.ClassNotFoundException: org.apache.hawq.pxf.plugins.json.JsonAccessor 说明 服务器遇到内部错误,阻止它完成此请求。 exception 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

任何帮助将不胜感激。

似乎引用的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 -> Advanced pxf-public-classpath 添加以下行

/

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

  1. 在 Ambari 托管的 PXF 中,通过 Ambari Admin -> PXF -> Advanced pxf 配置文件,将此代码段添加到您的 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. 通过安巴里重新启动 PXF 服务

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

你试过吗:

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

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

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

相关内容

  • 没有找到相关文章

最新更新