Mapreduce 从HBase提取数据的最快方法是什么

Mapreduce 从HBase提取数据的最快方法是什么,mapreduce,hive,hbase,impala,phoenix,Mapreduce,Hive,Hbase,Impala,Phoenix,我在HBase中有大约5TB的数据分布在30个不同的表中。 我的用例是,基于每个表中的两个特定列,即年份和国家,我必须创建5K个不同的文本文件。 为此,我集成了HIVE和HBase,但从HIVE中提取需要很长时间。 我必须在10小时内完成这项工作。 寻找你的想法如何实现这一点。 关于这一点,我有一些问题 HIVE HBase集成是好方法吗 使用mapreduce从HBase提取数据是个好主意吗 我不能使用ApachePhoenix,因为它没有与HBase一起发布 黑斑羚也使用高内存,所以我的集群

我在HBase中有大约5TB的数据分布在30个不同的表中。 我的用例是,基于每个表中的两个特定列,即年份和国家,我必须创建5K个不同的文本文件。 为此,我集成了HIVE和HBase,但从HIVE中提取需要很长时间。 我必须在10小时内完成这项工作。 寻找你的想法如何实现这一点。 关于这一点,我有一些问题

  • HIVE HBase集成是好方法吗
  • 使用mapreduce从HBase提取数据是个好主意吗
  • 我不能使用ApachePhoenix,因为它没有与HBase一起发布
  • 黑斑羚也使用高内存,所以我的集群没有为此配置

  • 我在HBase中的数据如下

    ���U"9����|Japan|2012   48433172245     1001371402      FundamentalSeries       NULL    NULL    139     238474518       1.65494205533344        Price2SFCFLPsr  NULL   False            3011645 1000190205      False   True    I       Japan   2012
    
    C��t�I�\���7|ThirdPartyPrivate|2009     48934711562     1001371402      FundamentalSeries       NULL    NULL    9       5631268 21.2315827835749        STCA_PoP       NULL     False           3011645 1000193170      False   True    I       ThirdPartyPrivate       2009
    
    
    �����^Z4Ga�|Japan|2013  48433158708     1001371402      FundamentalSeries       NULL    NULL    507     160531379       1.1248E10       STAX_TTM        500186  False  3011646  1000193168      False   False   I       Japan   2013
    
    
            G\�=�HO�S�|Japan|2008   48433173983     1001371402      FundamentalSeries       NULL    NULL    153     1961706488      0.500256556630127       RIBEIT_TTM     NULL     False           3011646 1000193016      False   False   I       Japan   2008
    
    
            �G��G�i0�]|Japan|2012   48433336633     1001371402      FundamentalSeries       NULL    NULL    894     3112047463      14.3904580667924        Ev2SEBIT_Avg5  NULL     False           3011645 1000190030      False   True    I       Japan   2012
    
    
            ���r����/8|Japan|2015   48433251137     1001371402      FundamentalSeries       NULL    NULL    200     2907364871      -46.9431625157866       SNOPA_YoY      NULL     False           3011646 1000423629      False   False   I       Japan   2015
    
    
    
    �)H�<�����t|Japan|2008  48433139729     1001371402      FundamentalSeries       NULL    NULL    1170    2604636883      0.267980759053007       PPE2ANOA        NULL   False            3011646 1001262486      False   False   I       Japan   2008
    
    
    
    'H�&�g���|Japan|2005    48433195827     1001371402      FundamentalSeries       NULL    NULL    147     450289107       0.540110660915134       Ev2SEBIT        NULL   False            3011645 1000190028      False   True    I       Japan   2005
    
    
    
    c�\��17ɟ�|Japan|2013    48433160145     1001371402      FundamentalSeries       NULL    NULL    885     2010667500      -19.6553084635268       SAMI_TTM_YoY    NULL   False            3011646 1000190297      False   False   I       Japan   2013
    
    
    j���}��||Japan|2010     48433159175     1001371402      FundamentalSeries       NULL    NULL    214     420693538       -17.3468681844827       SCOR_YoY        NULL   False            3011646 1000192789      False   False   I       Japan   2010
    
    ���U“9����|日本| 2012 48433172245 1001371402基础系列空值139 238474518 1.65494205533344价格2SFCFLPSR空值假值3011645 1000190205假值日本2012
    C��T�我�\���7 |第三方私人| 2009 48934711562 1001371402基础系列空值9 5631268 21.2315827835749 STCA|U PoP空值假值3011645 1000193170假值我第三方私人2009
    �����^Z4Ga�|日本| 2013 48433158708 1001371402基础系列空空507 160531379 1.1248E10 STAX|U TTM 500186假301646 1000193168假假日本2013
    G\�=�总公司�s�|日本| 2008 48433173983 1001371402基础系列空值1531961706488 0.500256556630127 RIBEIT_TTM空值假值301646 1000193016假值假值日本2008
    �G��G�i0�]|日本| 2012 48433336633 1001371402基础系列空值894 3112047463 14.3904580667924 Ev2SEBIT_Avg5空值假值301645 1000190030假值真值日本2012
    ���R����/8 |日本| 2015 48433251137 1001371402基础系列空值200 2907364871-46.9431625157866 SNOPA|YOU空值假值301646 1000423629假值假值假值假值日本2015
    
    �)H� 选项1:请注意,配置单元hbase集成和查询配置单元也将在幕后使用mapreduce

    但是您对hive执行的mapreduce没有细粒度控制

    选项3:您还排除了选项3,即您提到的凤凰城

    选项4:黑斑羚更快,但你有一定的限制。所以排除了

    选项2:根据我使用hbase的经验,我将提供使用mapreduce从hbase提取数据的功能。即,您的选项2将对作业的执行提供更精确的控制

    但在这种方法中,你也必须调整你的工作

    scan.setCaching(500);
    scan.setCacheBlocks(false); 
    
    • 最重要的是,您必须设计rowkey以避免并使用高效过滤器(例如
      FuzzyRowFilter
      ),以确保快速访问
    • 尽量避免使用列值过滤器,以确保不发生完全表扫描
    • 请注意,表的区域数等于为该特定作业启动的映射程序数。因此,请将表预拆分为某个范围(例如0-9),以便所有行都位于这些特定区域下(当然,它可以进一步拆分为多个区域,但如果确保区域数量较少,因此所有映射者都可以获得足够数量的记录进行处理,则这是一种方法…)
    如果我理解正确。您希望生成多个序列文件

    请查看使用MultipleOutput的使用模式


    是的,实际上它很有用。我正在实施它。我有一个疑问,我必须根据键中的扫描过滤器创建不同的文本文件。我怎么做?我也用实现更新了我的问题。我知道你正在尝试根据扫描结果创建序列文件。你想做什么?你能给我一些建议吗示例数据?我已经更新了我的行。在第一列中是我的行键。我有130个区域,还没有聚光灯。根据当年行键中的最后两个元素和文件ie Japan/ThirdParty,我必须创建文本文件。
    FuzzyRowFilter
    当您在行键。在本例中,Fixedpart为Japan,后跟year或ThirdParty,后跟year。变量部分剩余。我知道您正在基于rowfilter进行扫描。关于上述检查链接。
    scan.setCaching(500);
    scan.setCacheBlocks(false); 
    
     Job job = new Job();
    
     FileInputFormat.setInputPath(job, inDir);
     FileOutputFormat.setOutputPath(job, outDir);
    
     job.setMapperClass(MOMap.class);
     job.setReducerClass(MOReduce.class);
     ...
    
     // Defines additional single text based output 'text' for the job
     MultipleOutputs.addNamedOutput(job, "text", TextOutputFormat.class,
     LongWritable.class, Text.class);
    
     // Defines additional sequence-file based output 'sequence' for the job
     MultipleOutputs.addNamedOutput(job, "seq",
       SequenceFileOutputFormat.class,
       LongWritable.class, Text.class);
     ...
    
     job.waitForCompletion(true);
     ...