强制 Hive 表中的每一行使用映射器



假设我有一个Hive表(命名表),如下所示:

row1 2341
row2 828242
row3 205252
...

表格本身很长(数千行)。我正在做这样的事情来使用 Python 脚本运行转换:

FROM (
MAP table.row, table.num
USING 'python script.py' 
AS output
FROM table
) t1
INSERT OVERWRITE TABLE table2
SELECT (t1.output) as output_result;

问题是,因为我实际上是在读取表而不是文件,所以每一行都被传递给同一个映射器。可以想象,这需要很长时间。有没有办法强制每一行转到单独的映射器,以便脚本中的任何逻辑都可以处理其他所有内容?从本质上讲,我想像它应该的那样运行mapreduce,但只将行从表传递到不同的映射器。

感谢您的帮助。

输入拆分的数量由Hadoop决定。但您可以通过设置 mapred.min.split.size参数。

通过表或文件传递行并不重要,因为在后台两者都是文本文件。

默认情况下,以千字节为单位的文件将仅传递给一个映射器。如果只想尝试,可以创建一个大小约为 1 GB 的文件,然后运行查询。

相关内容

  • 没有找到相关文章

最新更新