美文网首页
IMPALA 解析JSON 结论: 无法用于where条件

IMPALA 解析JSON 结论: 无法用于where条件

作者: 会长大的幸福_8bf9 | 来源:发表于2018-06-07 20:42 被阅读0次

    最近MYSQL 5.7更新支持JSON语法  ,于是使用SQOOP同步了数据到大数据平台,准备使用IMPALA来做分析

    但是发现IMPALA无法使用 JSON 用于where条件,只能用于 select, 不过 我未尝试使用  基于嵌套表去查询

    作为替代方案: 可以使用SPARK SQL 基于 JSON查询  语法如下 

    SELECT

      v1.name, v2.city, v2.state

    FROM people

      LATERAL VIEW json_tuple(people.jsonObject, 'name', 'address') v1

        as name, address

      LATERAL VIEW json_tuple(v1.address, 'city', 'state') v2

        as city, state;

    IMPALA JSON 插件 以下为安装流程与测试流程:

    安装:基于UBUNTU 14.04 

    #下载cloudera源

    wget https://archive.cloudera.com/cdh5/ubuntu/trusty/amd64/cdh/cloudera.list

    #复制到sources中

    cp -rf cloudera.list  /etc/apt/sources.list.d/

    #添加认证key

    curl -s https://archive.cloudera.com/cdh5/ubuntu/trusty/amd64/cdh/archive.key| sudo apt-key add -

    #更新APT库

    apt-get update

    #安装ImpalaUDF环境

    apt-get install impala-udf-dev

    #安装BOOST开发环境(IMPALA UDF依赖)

    apt-get install libboost-dev

    apt-get install cmake

    #安装gcc,使用gcc --version查看 如果已经安装就不进行

    #apt-get install build-essential

    #apt-get install g++-4.4

    #获取源码包

    wget https://codeload.github.com/nazgul33/impala-get-json-object-udf/zip/master

    #解压源码包,如果无法使用unzip,则进行安装

    unzip master

    #开始编译

    cd impala-get-json-object-udf-master

    cmake .

    make

    #上传udf编译文件到hdfs

    hdfs dfs -mkdir /user/udf

    hdfs dfs -put build/libjsonUdf.so /user/udf

    #进入Impala

    impala-shell

    #执行过后会进入Imapa控制台,可以理解为mysql 查询界面

    use default;

    CREATE FUNCTION json_get_object (string, string) RETURNS string location '/user/udf/libjsonUdf.so' symbol='JsonGetObject';

    #测试Json查询

    SELECT json_get_object('{"name":"steven"}', '$.name');

    #能够查询出steven即可

    相关文章

      网友评论

          本文标题:IMPALA 解析JSON 结论: 无法用于where条件

          本文链接:https://www.haomeiwen.com/subject/vbsnsftx.html