pig@hadoop:使用多核处理没有 hdfs 的本地文件
Posted
技术标签:
【中文标题】pig@hadoop:使用多核处理没有 hdfs 的本地文件【英文标题】:pig@hadoop: processing local files without hdfs with multiple cores 【发布时间】:2015-07-25 01:05:05 【问题描述】:如果我在本地模式下运行 pig@hadoop(因为我不想使用 hdfs),那么它会以单线程/单进程模式处理我的脚本。如果我在伪模式下设置 hadoop(复制=1 的 hdfs),那么 pig@hadoop 不喜欢我的file:///...
:
traj = LOAD 'file:///root/traj'
USING org.apache.pig.piggybank.storage.CSVExcelStorage(
';', 'NO_MULTILINE', 'UNIX', 'SKIP_INPUT_HEADER'
) AS
(
a1:chararray,
a2:long,
a3:long,
a4:float,
a5:float,
a6:float,
a7:chararray,
a8:float,
a9:chararray
);
c = FOREACH (GROUP traj ALL) GENERATE COUNT(traj);
dump c;
有没有办法告诉 pig@hadoop 以多核模式处理文件而不将文件放入 hdfs 中?
【问题讨论】:
【参考方案1】:本地模式 - 要在本地模式下运行 Pig,您需要访问单台机器;所有文件都使用本地主机和文件系统安装和运行。使用 -x 标志指定本地模式(pig -x local)。
Mapreduce 模式 - 要在 mapreduce 模式下运行 Pig,您需要访问 Hadoop 集群和 HDFS 安装。 Mapreduce模式是默认模式;您可以但不需要使用 -x 标志(pig OR pig -x mapreduce)指定它。
来源:http://pig.apache.org/docs/r0.9.1/start.html#execution-modes
如果你想在本地模式下运行它,你应该使用命令$ pig -x local
将 pig 切换到本地模式。默认情况下 pig 在 MapReduce 模式下运行并从 HDFS 读取数据。
要在本地模式下运行 Pig,您只需要访问一台机器。为简单起见,将文件复制到当前工作目录(您可能希望创建一个临时目录并移至该目录)在您的 pig 脚本中提供该位置。
【讨论】:
我可以在本地和外部 mapreduce 模式(以伪模式下运行)运行 pig,几乎就像你描述的那样。如果我在 mapreduce 模式下运行 pig,pig 会抱怨file:///root/traj
(无法访问,尽管文件在本地)。如何在没有 hdfs 的情况下以 hadoop 或本地模式处理文件?
如果您已将 pig 切换为本地模式,那么它将从您的本地目录中获取 pic 文件并在本地模式下运行。同样,如果您想在 MapReduce 模式下运行,则需要使用命令 $ pig -x mapreduce
将其切换到 MapReduce 模式,并且文件应该在 HDFS 位置可用。
在本地模式下 (pig -x local
) 我可以访问所有本地文件,但处理仅限于一个核心。在 mapreduce 模式下 (pig -x maprecude
) 我有 32 个内核可用,但在访问本地文件时遇到问题。我怎样才能同时获得这两者?
你不能同时得到两个。您一次只能选择一个。并行处理是 Hadoop 的一个优势,因此您应该使用 HDFS 而不是本地模式来快速处理作业。以上是关于pig@hadoop:使用多核处理没有 hdfs 的本地文件的主要内容,如果未能解决你的问题,请参考以下文章