这看起来是个愚蠢的问题,但我可以´找不到从我的行中筛选空值的方法。这是我转储对象geoinfo时的结果:
转储地理信息;
([经度70.95853,纬度30.9773])
([经度#-9.37944507,纬度#38.91780853])
(空)
(空)
(空)
([经度#-92.64416,纬度#16.73326])
(空)
(空)
([经度#-9.15199849,纬度#38.71179122])
([经度#-9.15210796,纬度#38.71195131])
这是描述
描述地理信息;
地理信息:{地理位置:bytearray}
我要做的是像这样过滤空值:
geoinfo\u no\u nulls=按地理位置过滤geoinfo不为空;
但结果还是一样。不过滤任何内容。
我也试过这样的方法
geoinfo\u no\u nulls=按地理位置筛选地理信息!='空';
我犯了个错误
org.apache.pig.backend.executionengine.executexception:错误1071:无法将Map转换为字符串
我做错什么了?
详细信息,运行在ubuntu上,hadoop-1.0.3和pig0.9.3
pig版本apache pig版本0.9.3-snapshot(rexported)编译于2012年10月24日19:04:03
java版本“1.6.0\u 24”openjdk运行时环境(icedtea6 1.11.4)(6b24-1.11.4-1ubuntu0.12.04.1)openjdk 64位服务器虚拟机(内部版本20.0-b12,混合模式)
4条答案
按热度按时间hsvhsicv1#
谢谢你们的回答。它帮助我找到路。
最后,我所使用的jsonloader将出现问题。我不知道确切的原因,但是有一个带有空字符串的bug是很正常的。
我终于把代码改成了https://github.com/kevinweil/elephant-bird.
现在代码如下所示:
干杯
enxuqcxy2#
我也遇到过类似的问题,类似的事情对我很有用:
mnemlml83#
假设您希望地理位置是以经纬度为关键字的Map,则可以将数据作为Map加载,并按如下方式检查空值:
不过,这只是一种变通办法。
hs1rzwqc4#
试试这个:
geoinfo_no_nulls = FILTER geoinfo BY (geomap#'geoLocation' is not null);
从错误中可以看出,它将类型识别为Map。您需要指定Map的特定键。如果这不起作用,您通常无法将该数据作为Map正确获取。请照弗雷德说的做。