【问题标题】:Filtering Using MapReduce in Hadoop在 Hadoop 中使用 MapReduce 进行过滤
【发布时间】:2012-02-15 06:20:20
【问题描述】:

我想根据一些标准从给定文件中过滤记录,我希望我的标准是如果第三个字段的值等于某个值,然后检索该记录并将其保存在输出文件中。我将 CSV 文件作为输入.任何人都可以提出一些建议吗?

【问题讨论】:

    标签: hadoop mapreduce filtering


    【解决方案1】:

    最简单的方法可能是使用pig

    orig = load 'filename.csv' using PigStorage(',') as (first,second,third:chararray,...);
    
    filtered_orig= FILTER orig by third=="somevalue"; 
    
    store filtered_orig into 'newfilename' using PigStorage(',');
    

    【讨论】:

    • 嗯,我想用 mapreduce 来做,有什么办法吗?
    • pig 生成 map-reduce - 你可以在 Java 中自己编写相同的逻辑
    【解决方案2】:

    如果您需要可扩展性,您可以通过以下方式使用 hadoop:
    安装 Hadoop,安装 hive,将 csv 文件放入 HDFS。

    将 CSV 文件定义为外部表 (http://hive.apache.org/docs/r0.8.1/language_manual/data-manipulation-statements.html),然后您可以针对 CSV 文件编写 SQL .然后可以将 SQL 的结果导出回 CSV。

    【讨论】:

    • 如果我只想使用 mapredcue 来做,有什么办法吗?我不想使用蜂巢
    • 在这种情况下,您可以使用 hadoop 流。在 natshell 中 - hadoop 将为您的脚本提供输入数据,并收集输出。
    • 感谢您的建议,我从未使用过 hadoop 流,但我会尝试
    • 性能不如普通MR,但开发最简单。
    猜你喜欢
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多