首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用pig过滤空值

用pig过滤空值
EN

Stack Overflow用户
提问于 2012-10-31 18:26:41
回答 4查看 35.7K关注 0票数 14

这看起来是一个愚蠢的问题,但我无法找到从行中筛选空值的方法。这是当我转储对象geoinfo时的结果:

转储地理信息;(longitude#70.95853,latitude#30.9773)(经度#-9.37944507,latitude#30.9773 latitude#38.71179122)(经度#-9.15210796,latitude#38.71195131)

下面是描述

描述地理信息;地理信息:{geoLocation:字节数组}

我要做的是过滤空值,例如:

geoinfo_no_nulls = geoLocation过滤地理信息不为空;

但结果依然不变。没有什么是被过滤的。

我也尝试过这样的方法

geoinfo_no_nulls =用geoLocation !=‘null’过滤地理信息;

我犯了个错误

org.apache.pig.backend.executionengine.ExecException:错误1071:无法将映射转换为字符串

我做错了什么?

详细信息,运行在ubuntu上,hadoop-1.0.3和pig 0.9.3

pig -version Apache版本0.9.3-快照(重新移植)编译于2012年10月24日,19:04:03

java版本"1.6.0_24“OpenJDK运行时环境(IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1) OpenJDK 64位服务器VM (Build20.0-B12,混合模式)

EN

回答 4

Stack Overflow用户

发布于 2012-11-17 04:54:32

谢谢你们的回答伙计们。它能帮我找到这条路。

最后,我正在使用的JsonLoader的问题接缝。我不知道确切的原因,但是如果有一个带有空字符串的bug就会接缝。

最后,我将代码更改为使用https://github.com/kevinweil/elephant-bird

代码现在如下所示:

代码语言:javascript
复制
    register 'elephant-bird-core-3.0.0.jar'
    register 'elephant-bird-pig-3.0.0.jar'
    register 'google-collections-1.0.jar'
    register 'json-simple-1.1.jar'

    json_lines = LOAD '/twitterecho/tweets/stream/v1/json/2012_10_10/08' USING com.twitter.elephantbird.pig.load.JsonLoader();

    geo_tweets = FOREACH json_lines GENERATE (CHARARRAY) $0#'id' AS id, (CHARARRAY) $0#'geoLocation' AS geoLocation;

    tweets_grp = GROUP geo_tweets BY id;
    unique_tweets = FOREACH tweets_grp {
          first_tweet = LIMIT inpt 1;
          GENERATE FLATTEN(first_tweet);
    };

    only_not_nulls = FILTER geo_tweets BY geoLocation is not null;
    store only_not_nulls into '/twitter_data/results/geo_tweets';

干杯

票数 4
EN

Stack Overflow用户

发布于 2012-10-31 18:40:21

我也有类似的问题,这样的事情对我来说很管用:

代码语言:javascript
复制
geoinfo_no_nulls = FILTER geoinfo BY geoLocation != '';
票数 3
EN

Stack Overflow用户

发布于 2012-10-31 22:55:39

假设您希望您的地理位置是一个以经度和纬度为键的地图,您可以将数据加载为map,并按如下方式检查空值:

代码语言:javascript
复制
A = LOAD 'data' AS (f1:map[]);
B = FILTER A BY f1#longitude is not null and f1#latitude is not null;

不过,这只是一种解决办法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13165337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档