有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在PIG中获取名称值JSON

大家好,我刚开始做pig,我想知道JsonLoader是否能够解析json中的所有值

例如:

{"food":"Tacos", "person":"Alice", "amount":3}

我需要把“食物”作为关系存储在chararray和“玉米饼”中,这是“食物”对另一个关系的价值

在阅读了许多教程和文档之后,我还没有找到一个内置的方法来实现这一点

这是否意味着唯一的解决办法是通过UDF

非常感谢


共 (2) 个答案

  1. # 1 楼答案

    我发现答案是使用twitter上的外部jar

    register 'hdfs:/udf/elephant-bird-pig-4.10.jar';
    register 'hdfs:/udf/elephant-bird-core-4.10.jar';
    register 'hdfs:/udf/elephant-bird-hadoop-compat-4.10.jar';
    register 'hdfs:/udf/json-simple-1.1.1.jar';
    

    测试。json

    {"food":"Tacos", "person":"Alice", "amount":3}
    

    脚本:

    A = LOAD 'hdfs:/test.json' USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad') AS (json:map[]); 
    DUMP A;
    

    我想要的结果是:

    ([amount#3,food#Tacos,person#Alice])
    

    谢谢

  2. # 2 楼答案

    输入-清管器。json

    {"food":"Tacos", "person":"Alice", "amount":3}
    

    剧本

    A = LOAD '/home/kishore/Data/Pig/pig.json' USING JsonLoader('food:chararray,person:chararray,amount:int');
    B = foreach A generate food,person,amount;
    Dump B;
    

    输出

    (Tacos,Alice,3)