Lua可以和Hadoop对话吗?



我可以将Lua编程语言用于Hadoop吗?

如果是这样,如何?

绝对:)你可以像这样使用Hadoop流:

在lua中创建从stdin读取的映射器和/或化简器脚本:

#!/usr/bin/env lua
while true do
  local line = io.read()
  if line == nil then break end
  # Do something with the incoming row
end

然后像这样运行你的作业:

$HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar 
    -input myInputDirs 
    -output myOutputDir 
    -mapper myMapper.lua 
    -reducer myReducer.lua 
    -file /local/path/to/myMapper.lua
    -file /local/path/to/myReducer.lua

在这里,您可以使用 -mapper-reducer 指定映射器和化简器脚本,并将这两个脚本连同-file一起发送到分布式缓存,以便所有任务跟踪器都可以访问它。

使用流式处理运行时,需要确保lua在运行任务跟踪器的所有计算机上都可用。

前段时间,我们尝试使用luajit(速度非常快)从 Pig 流式传输。如果你使用 Pig,你可以执行以下操作:

 OP = stream IP through `/local/path/to/script`; 
这与使用 lua 作为映射器或化简器不同,

但根据操作发生的位置,映射器或化简器的输出将通过脚本流式传输。

我从未使用过Lua,也从未使用过Hadoop的流媒体方面 - 所以这只是一个建议,不确定它是否有效:

看看 http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/并使用Lua代替Python?

如果我要尝试按照你的要求去做,那将是我的出发点。

相关内容

  • 没有找到相关文章

最新更新