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

最近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条件)