en passant l'argument du script shell script hive

J'ai un souci qui peuvent être classés en 2 façons:
Mon exigence est de transmettre l'argument du script shell script hive.
OU
dans un script shell, je devrait inclure la valeur de la variable dans la ruche déclaration.

Je vais vous expliquer avec un exemple pour les deux:

1) Passage d'argument à partir du shell script hiveQL->

My test Hive QL:
select count(*) from demodb.demo_table limit ${hiveconf:num}

Mon test shell script:

cnt=1
sh -c 'hive -hiveconf num=$cnt -f countTable.hql'

Donc, fondamentalement, je veux inclure la valeur du " cnt " dans le HQL, ce qui n'est pas le cas dans cette affaire. J'obtiens l'erreur:

FAILED: ParseException line 2:0 mismatched input '<EOF>' expecting Number near 'limit' in limit clause

Je suis sûr que l'erreur signifie que la valeur de la variable n'est pas transmise.

2) Passage d'argument directement dans le shell script->

cnt=1
hive -e 'select count(*) from demodb.demo_table limit $cnt'

Dans les deux cas ci-dessus, je ne pouvais pas laisser passer la valeur de l'argument. Des idées??

PS: je sais que la requête semble absurde de la "limite" dans le compte mais j'ai reformulé le problème j'ai en réalité. L'exigence demeure intacte du passage de l'argument.

Des idées, n'importe qui?

Merci d'avance.

pouvez-vous faire l'écho dans le second cas et voir ce que vous obtenez: echo 'select count(*) from demodb.demo_table limite $cnt'
En utilisant des guillemets simples supprime l'expansion.

OriginalL'auteur knowone | 2015-06-02