Lua可以与Hadoop通信吗?

我能在 Hadoop 中使用 Lua 编程语言吗?

如果可以,怎么做?

原文链接 https://stackoverflow.com/questions/6103569

点赞
stackoverflow用户156708
stackoverflow用户156708

我从未使用过Lua,也没有使用过Hadoop的流媒体 - 因此,这仅仅是一个建议,不确定它是否能够起作用:

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

如果我要尝试实现你所要求的内容,那么这将是我的起点。

2011-05-24 13:57:56
stackoverflow用户1978196
stackoverflow用户1978196

当然可以 :) 您可以像这样使用 Hadoop 流:

创建使用 lua 从 stdin 读取的 mapper 和/或 reducer 脚本:

#!/usr/bin/env lua
while true do
  local line = io.read()
  if line == nil then break end

  # 对传入行进行某些操作

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 指定了您的 mapper 和 reducer 脚本,并使用 -file 将两个脚本一起发送到您的分布式缓存中,因此所有任务跟踪器都可以访问它。

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

一段时间以前,我们尝试使用 luajit(速度非常快)从 Pig 进行流式处理。如果您使用 Pig,则可以执行以下操作:

 OP = stream IP through `/local/path/to/script`;

这与使用 lua 作为 mapper 或 reducer 不同,但是根据操作发生的位置,来自 mapper 或 reducer 的输出会通过脚本进行流式处理。

2011-05-26 07:14:46