gpt4 book ai didi

hadoop - 用 pig 过滤空值

转载 作者:可可西里 更新时间:2023-11-01 14:11:10 25 4
gpt4 key购买 nike

这看起来是个愚蠢的问题,但我找不到从我的行中过滤空值的方法。这是我转储对象地理信息时的结果:

DUMP geoinfo;
([longitude#70.95853,latitude#30.9773])
([longitude#-9.37944507,latitude#38.91780853])
(null)
(null)
(null)
([longitude#-92.64416,latitude#16.73326])
(null)
(null)
([longitude#-9.15199849,latitude#38.71179122])
([longitude#-9.15210796,latitude#38.71195131])

这是描述

DESCRIBE geoinfo;
geoinfo: {geoLocation: bytearray}

我想做的是像这样过滤空值:

geoinfo_no_nulls = FILTER geoinfo BY geoLocation is not null;

但结果还是一样。没有过滤。

我也试过类似的方法

geoinfo_no_nulls = FILTER geoinfo BY geoLocation != 'null';

我得到了一个错误

org.apache.pig.backend.executionengine.ExecException: ERROR 1071: Cannot convert a map to a String

我做错了什么?

细节,在 ubuntu 上运行,hadoop-1.0.3 和 pig 0.9.3

pig 版Apache Pig 版本 0.9.3-SNAPSHOT(已报告)编译于 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(构建 20.0-b12,混合模式)

最佳答案

谢谢大家的回答。它帮助我找到路径。

最后问题似乎出在我使用的 JsonLoader 上。我不知道确切原因,但它似乎有一个空字符串错误。

我终于更改了我的代码以使用 https://github.com/kevinweil/elephant-bird .

代码现在看起来像这样:

    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';

干杯

关于hadoop - 用 pig 过滤空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13165337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com