2012-11-27 3 views
3

Je travaille avec un grand volume de messages HL7 formatés au format 2.x. Le format est un format de tube délimité où chaque format ressemble à peu près comme ceci (données fictives):Dois-je aplatir les données HL7 pour les utiliser dans Hadoop/Hive? Ou étendre Hive?

MSH|^~\&|EPIC|EPICADT|SMS|SMSADT|199912271408|CHARRIS|ADT^A04|1817457|D|2.5| 
PID||0493575^^^2^ID 1|454721||DOE^JOHN^^^^|DOE^JOHN^^^^|19480203|M||B|254 MYSTREET AVE^^MYTOWN^OH^44123^USA||(216)123-4567|||M|NON|400003403~1129086| 
NK1||ROE^MARIE^^^^|SPO||(216)123-4567||EC||||||||||||||||||||||||||| 
PV1||O|168 ~219~C~PMA^^^^^^^^^||||277^ALLEN MYLASTNAME^BONNIE^^^^|||||||||| ||2688684|||||||||||||||||||||||||199912271408||||||002376853 

Je voudrais faire des requêtes volumineuses/exploration de ces données en utilisant Hive ou quelque chose de similaire. Dois-je d'abord aplatir ces données dans plus d'un format de table en utilisant HParser ou quelque chose de similaire? Ou serait-il utile de prolonger Hive pour pouvoir interroger ceci via un SerDer ou un InputFormat personnalisé?

Répondre

4

Vous devriez être en mesure de traiter HL7 avec une regex via le RegExSerde relativement facilement. Cela étant dit, l'écriture d'un serde n'est pas terriblement difficile (quelques heures) une fois que vous grok l'objectinspector et d'autres plomberie Hive Le serde personnalisé peut également fournir les noms de champ automatiquement, mais c'est de bénédiction mineure. Une étape d'analyse distincte est excessive.

+0

Merci, Jakob. Regex fonctionnerait, sans aucun doute. J'ai trouvé une librairie d'analyse syntaxique Java HL7, ce qui fait que je finirai par l'emballer dans un SerDe personnalisé pour avoir les noms des champs. – Jelling

Questions connexes