我正在尝试将 map 子句与 Hive 一起使用,但我遇到了语法问题,并且没有找到很多我的用例示例。当我不得不使用外部脚本处理表的列之一时,我使用了 map 子句。
我有一个名为 的 python 脚本run
,它接受一个命令行参数并输出三个空格分隔的值。所以我只是做了:
FROM(MAP
tablename.columnName
USING
'run' AS
result1, result2, result3
FROM
tablename
) map_output
INSERT OVERWRITE TABLE results SELECT *;
现在我有一个 python 脚本,它接收更多的参数,并尝试了一些不起作用的东西,也找不到这方面的例子。我做了很明显的事情:
FROM
(MAP
numAgents, alpha, beta, burnin, nsteps, thin
USING
'runAuthorityMCMC' AS numAgents, alpha, beta, energy, avgDegree, maxDegree, accept
FROM
parameters
) map_output
INSERT OVERWRITE TABLE results SELECT *;
A user-supplied transfrom script has exited with error code 2 instead of 0.
但是当我运行时出现错误runAuthorityMCMC
,从该表中采样了 6 个命令行参数,它运行良好。
在我看来,它试图在根本不传递参数的情况下运行脚本。如果是这种情况,在其中一条错误消息中,我得到了我所期望的输出。做我想做的事情的正确语法是什么?
编辑:
确认 - 这是错误消息的一部分:
usage: runAuthorityMCMC [-h]
numAgents normalizedBrainCapacity ecologicalPressure
burnInSteps monteCarloSteps thiningRatio
runAuthorityMCMC: error: too few arguments
这正是我期望的输出,但论点太少了。脚本应该有六个参数。