Comment permettre à la ruche.mapred.mode=nonstrict?
Je suis en train d'exécuter cette requête, avec un JOIN
sans ON
propriété.
Je suis l'exécution de la requête comme:
hive -v -f my_file.hql
J'ai eu ce message:
En mode strict, produit cartésien n'est pas autorisé. Si vous voulez vraiment
pour effectuer l'opération, l'ensemble de la ruche.mapred.mode=nonstrict
- Je mettre à jour le hql fichier:
set hive.mapred.mode=nonstrict
sur le dessus de cela.
Mais ensuite, j'ai eu ce message:
ENSEMBLE de la ruche.mapred.mode=nonstrict Requête a retourné non nulle code: 1, cause:
Impossible de modifier la ruche.mapred.mode lors de l'exécution. C'est dans le listof
les paramètres qui ne peuvent pas être modifiées lors de l'exécution
Comment je peux résoudre ce problème?
ps: je veux faire cette cartesian product
.
Comment je fais pour y arriver? Où je peux mettre cette variable hive.mapred.mode
fonctionne ?
- avez-vous essayé de la mettre hive-site.xml?
- Je n'ai pas accès à la hive-site.xml (à l'aide d'un cluster partagé) @spijs
- Avez-vous une bonne raison pourquoi vous ne voulez pas utiliser
ON
? Apparemment, la Ruche ne peut pas optimiser la conversion d'une clause where pour unON
. - Je suis juste en utilisant une autre table qui n'est pas nécessairement correspondre parfaitement les uns avec les autres, c'est pourquoi ne fait pas de sens pour moi, dans ce cas, utilisez la SUR sur elle. @spijs
- Avez-vous essayé de le mettre dans la Ruche shell interactif? Si cela n'est pas possible, il est probable que ce doit être définie avant d'allumer la ruche-serveur, ce qui signifie que vous ne pouvez probablement pas comprendre cela sans contacter votre administrateur de cluster.
- Ce que vous pouvez essayer est bien pour ajouter une colonne à deux tables, qui a toujours pour exemple la valeur 1. Si vous puis de faire une jointure sur ces valeurs, vous obtenez le produit cartésien si je ne me trompe pas.
Vous devez vous connecter pour publier un commentaire.
Comme vous le savez déjà un produit cartésien n'est pas autorisé en mode strict (et pour de bonnes raisons). Dans votre cas il semble que vous ne disposez pas des autorisations d'apporter des modifications à ce type de ruche paramètres.
De pirater autour de ce problème que vous pourriez faire est la suivante.
D'abord créer deux nouvelles tables
Puis rejoindre ces tableaux sur cette
join_key
. Le résultat sera le produit cartésien car elle correspond à chaque ligne detable1
à chaque ligne detable2
.Viens de découvrir que l'utilisation de --hiveconf résout le problème:
permettra à la
nonstrict mode
spécifiquement pour cette requête.