hadoop - PIG - matching toDate function -


i trying cast string datetime object in hadoop pig. grunt give me strange error message : can't choose correct 'todate' function. asking 'explicit cast', have no clue how so. idea ?

=> error 1045: not infer matching function org.apache.pig.builtin.todate multiple or none of them fit. please use explicit cast.

grunt> describe infos_by_nu_affa; infos_by_nu_affa: {nu_affa: bytearray,affaires: {(nu_affa:bytearray,nu_pcp: bytearray,debut: bytearray,fin: bytearray)},prestations: {(nu_affa: bytearray,montant: bytearray,date: bytearray,nu_presta: bytearray,beneficiaire: bytearray)},clients: {(nu_pcp: bytearray,nom: bytearray,prenom: bytearray)}}   derivees = foreach infos_by_nu_affa  generate *, todate(affaires.debut, 'dd/mm/yyyy') (debut:datetime); 2015-03-28 15:46:36,089 [main] error org.apache.pig.tools.grunt.grunt - error 1045: <line 155, column 0> not infer matching function org.apache.pig.builtin.todate multiple or none of them fit. please use explicit cast.   grunt> dump infos_by_nu_affa (affaire5,{(affaire5,client5,01/01/14,05/01/15)},{},{(client5,enders,kililan)}) (affaire6,{(affaire6,client6,01/01/13,01/06/14)},{},{(client6,blanco,martine)}) (affaire7,{(affaire7,client7,01/01/10,02/03/13)},{},{(client7,sarah,moore)}) (affaire8,{(affaire8,client8,01/01/15,01/01/01)},{},{(client8,evrard,dominique)})    grunt> derivees = foreach infos_by_nu_affa  >> generate *, >> count(prestations) nb_prestations, >> todate(affaires.debut, 'dd/mm/yy') debut; 2015-03-28 15:56:06,729 [main] error org.apache.pig.tools.grunt.grunt - error 1045:  <line 155, column 0> not infer matching function org.apache.pig.builtin.todate multiple or none of them fit. please use explicit cast. 

the reason passing bag datatype(ie,affaires.debut) input todate function todate function accept chararray or byterarray input. solve issue, need flatten (affaires.debut) before passing todate function. should this

derivees_temp = foreach infos_by_nu_affa  generate *,flatten(affaires.debut) (debut_temp:chararray); derivees = foreach derivees_temp  generate *, todate(debut_temp, 'dd/mm/yyyy') (debut:datetime); 

note: in first stmt(ie,derivees_temp), after flattening datatype debut_temp chararray , second stmt(ie, derivees) after todate datatype debut datetime.


Comments

Popular posts from this blog

google chrome - Developer tools - How to inspect the elements which are added momentarily (by JQuery)? -

angularjs - Showing an empty as first option in select tag -

php - Cloud9 cloud IDE and CakePHP -