2016-02-18 1 views
0

Je travaille sur Hive 0.13 dans la distribution MapR. Je vois un problème étrange lorsque j'exécute la requête suivante dans hive en utilisant l'option hive -e.Hive -e et regex remplacent le problème udf

ci-dessous est ma requête:

select regexp_replace('$60,825.48','\\$|\,',''); 

La requête ci-dessus fonctionne très bien quand je lance de la coquille de ruche directement et donne la sortie comme désiré 60825,48.

Maintenant, Quand je lance le même en utilisant la ruche -e comme suit:

hive -e "select regexp_replace('$60,825.48','\\$|\,','');" 
Total MapReduce CPU Time Spent: 890 msec 
OK 
0825.48 
Time taken: 7.813 seconds, Fetched: 1 row(s) 

Le "6" obtient rogné de la sortie désirée.

Aussi, la même chose fonctionne bien avec l'option Hive -f aussi.

Pourriez-vous s'il vous plaît m'aider à identifier le problème?

Répondre

0

Essayez cette

hive -e 'select regexp_replace("$60,825.48","\\$|\,","");' 

Si votre objectif est de supprimer tout sauf les nombres et « », alors vous pouvez essayer cela aussi

hive -e 'select regexp_replace("$60,825.48","[^0-9.]","");' 
+0

Merci. Le premier a travaillé. Le "" a fait l'affaire. –