Filtrer les valeurs nulles avec le porc
Il ressemble à un drôle de problème, mais je ne peux pas trouver un moyen de filtrer les valeurs null de mes lignes.
C'est le résultat quand je dump l'objet geoinfo:
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])
voici la description
DÉCRIRE geoinfo;
geoinfo: {géolocalisation: bytearray}
Ce que je suis en train de faire est de filtrer les valeurs null comme ceci:
geoinfo_no_nulls = FILTRE geoinfo PAR géolocalisation n'est pas null;
mais le résultat reste le même. rien n'est filtré.
J'ai aussi essayé quelque chose comme ça
geoinfo_no_nulls = FILTRE geoinfo PAR géolocalisation != 'null';
et j'ai eu une erreur
org.apache.le cochon.backend.executionengine.ExecException: ERREUR 1071: Impossible de convertir une carte à une Chaîne de
Ce que je fais mal?
détails, en cours d'exécution sur ubuntu, hadoop-1.0.3 de porc 0.9.3
porc -version
Apache Pig version 0.9.3-INSTANTANÉ (rexported)
compilé 24 Oct 2012, 19:04:03
java version "1.6.0_24"
OpenJDK Environnement d'Exécution (IcedTea6 1.11.4) (6b24-1.11.4-1ubuntu0.12.04.1)
OpenJDK 64-Bit Server VM (build 20.0-b12, en mode mixte)
source d'informationauteur Arian Pasquali
Vous devez vous connecter pour publier un commentaire.
Merci pour vos réponses les gars.
- Il m'aider à trouver le chemin.
En fin de compte le problème coutures avec la JsonLoader j'ai été en utilisant.
Je ne sais pas exactement pourquoi, mais il semble avoir un bug avec des chaînes vides.
J'ai finalement changé mon code pour utiliser https://github.com/kevinweil/elephant-bird.
le code ressemble maintenant à ceci:
acclamations
J'ai eu des problème similaire, et quelque chose comme ce qui a fonctionné pour moi:
En supposant que vous voulez que votre géolocalisation pour être une carte avec la longitude et la latitude de touches, vous pouvez CHARGER vos données de carte et de vérifier les valeurs null comme suit:
C'est une sorte de solution de contournement, mais.
Essayez ceci:
geoinfo_no_nulls = FILTER geoinfo BY (geomap#'geoLocation' is not null);
Que je peux voir à partir de l'erreur il s'agit de reconnaître le type de carte. Vous devez spécifier la clé particulier de la carte.
Si cela ne fonctionne pas, vous êtes normalement pas arriver que les données correctement sur une carte.
S'il vous plaît essayer comme Fred indique.