项目作者: eiiches

项目描述 :
jq for Apache Phoenix
高级语言: Java
项目地址: git://github.com/eiiches/phoenix-jq-udf.git
创建时间: 2017-08-12T10:24:23Z
项目社区:https://github.com/eiiches/phoenix-jq-udf

开源协议:

下载


phoenix-jq-udf

jq for Apache Phoenix

Installation

  1. To use UDFs, you have to add the following property to hbase-site.xml on both client and server.

    1. <property>
    2. <name>phoenix.functions.allowUserDefinedFunctions</name>
    3. <value>true</value>
    4. </property>
  2. Build a UDF jar and copy it into your ${hbase.dynamic.jars.dir}.

    1. mvn clean package
    2. # adjust /hbase/lib to your ${hbase.dynamic.jars.dir}
    3. sudo -u hbase hadoop fs -copyFromLocal target/phoenix-jq-udf-0.0.1.jar /hbase/lib
  3. Run CREATE FUNCTION.

    1. CREATE FUNCTION jq(VARCHAR, VARCHAR CONSTANT, BOOLEAN CONSTANT DEFAULTVALUE='FALSE') RETURNS VARCHAR AS 'net.thisptr.phoenix.udf.jsonquery.JsonQueryFunction';

Refer to User-defined functions (UDFs) official documentation for general information about UDFs.

Usage

  1. jq(JSON, JQ, RAW=FALSE)

Examples

  1. Each UPSERT statement adds an element to set of unique integers represented by a JSON array.

    1. > CREATE TABLE foo (id INTEGER NOT NULL, val VARCHAR, CONSTRAINT pk PRIMARY KEY (id));
    2. > UPSERT INTO foo (id, val) VALUES (1, '[1]') ON DUPLICATE KEY UPDATE val = jq(val, '. + [1] | unique_by(.)');
    3. > UPSERT INTO foo (id, val) VALUES (1, '[1]') ON DUPLICATE KEY UPDATE val = jq(val, '. + [1] | unique_by(.)');
    4. > UPSERT INTO foo (id, val) VALUES (1, '[2]') ON DUPLICATE KEY UPDATE val = jq(val, '. + [2] | unique_by(.)');
    1. > SELECT * FROM foo;
    2. +-----+--------+
    3. | ID | VAL |
    4. +-----+--------+
    5. | 1 | [1,2] |
    6. +-----+--------+
  2. When RAW is set to TRUE, a raw string value is returned instead of its JSON representation (i.e. no quotes, no escapes).

    1. > CREATE TABLE foo (id INTEGER NOT NULL, val VARCHAR, CONSTRAINT pk PRIMARY KEY (id));
    2. > UPSERT INTO foo (id, val) VALUES (1, "\"foo\"");
    1. > SELECT id, jq(val, '.', TRUE) FROM foo;
    2. +-----+----------------------+
    3. | ID | JQ(VAL, '.', true) |
    4. +-----+----------------------+
    5. | 1 | foo |
    6. +-----+----------------------+
    1. > SELECT id, jq(val, '.') FROM foo;
    2. +-----+---------------+
    3. | ID | JQ(VAL, '.') |
    4. +-----+---------------+
    5. | 1 | "foo" |
    6. +-----+---------------+

License

The Apache License, Version 2.0