如何在 pig 中使用 JsonLoader 加载数据

Posted

技术标签:

【中文标题】如何在 pig 中使用 JsonLoader 加载数据【英文标题】:How to use JsonLoader in pig to load data 【发布时间】:2015-03-30 15:15:04 【问题描述】:

假设我有一个这种形式的 json 文件:

    "kind": "youtubeAnalytics#resultTable", "rows": [["2015-03-23", "a1jkKOrbYuQ", 141],["2015-03-24", "a1jkKOrbYuQ", 14]]
    "kind": "youtubeAnalytics#resultTable", "rows": [["2014-03-23", "a1jkKzubYuQ", 141],["2014-03-24", "a1jkKzubYuQ", 14]]

Following 是我编写的 pig 脚本,它只允许加载和转储文件:

    A = LOAD '/user/hdfs/youtube_data_views_' using JsonLoader('kind:chararray, rows:field:(i1:chararray,i2:chararray,i3:int)');
    DUMP A;

这是我得到的结果:

    (youtubeAnalytics#resultTable,)

实际上,我尝试了数十种元组和包的组合,以确保 A 被正确加载而不是部分加载。不幸的是,没有人工作。任何帮助将不胜感激

【问题讨论】:

【参考方案1】:

事实证明,我需要做的就是使用象鸟罐...... 以下是您需要注册的 jar 列表:

    REGISTER 'hdfs://10.1.1.154:8020/user/hdfs/pig_jars/elephant-bird-core-4.4.jar';
    REGISTER 'hdfs://10.1.1.154:8020/user/hdfs/pig_jars/elephant-bird-hadoop-compat-4.4.jar';
    REGISTER 'hdfs://10.1.1.154:8020/user/hdfs/pig_jars/elephant-bird-pig-4.4.jar';
    REGISTER 'hdfs://10.1.1.154:8020/user/hdfs/pig_jars/google-collections-1.0-rc1.jar';
    REGISTER 'hdfs://10.1.1.154:8020/user/hdfs/pig_jars/json-simple-1.1.jar';

最后一条建议:避免使用内置的 JsonLoader 函数。您将花费时间来获得正确的架构...

【讨论】:

以上是关于如何在 pig 中使用 JsonLoader 加载数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 Elephant-bird-pig 中的 JsonLoader 时出错

Pig 默认 JsonLoader 架构问题

使用 Pig 加载 Json 数据

猪 JsonLoader() 错误?

Pig Job 使用 Elephant Bird jsonLoader 时挂起

如何在使用three.js和jsonLoader时制作加载屏幕?