使用 HDP 2.4 和 HAWQ 2.0
想要将保存在 HDFS 路径中的 json 数据读取到 HAWQ 外部表中?
按照以下步骤将新的 json 插件添加到 PXF 并读取数据。
从https://bintray.com/big-data/maven/pxf-plugins/view#下载插件“json-pxf-ext-3.0.1.0-1.jar”
将插件复制到路径 /usr/lib/pxf 中。
创建外部表
CREATE EXTERNAL TABLE ext_json_mytestfile ( created_at TEXT, id_str TEXT, text TEXT, source TEXT, "user.id" INTEGER, "user.location" TEXT, "coordinates.type" TEXT, "coordinates.coordinates[0]" DOUBLE PRECISION, "坐标.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') FORMAT 'CUSTOM ' (FORMATTER='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描述服务器遇到内部错误,阻止它完成这个请求。异常 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
任何帮助将非常感激。