У меня около 5 Тбайт данных, распределенных по 30 различным таблицам в HBase. Моим вариантом использования является то, что на основе двух конкретных столбцов в каждой таблице, которые являются YEAR, и Country i, я должен создать 5K различных текстовых файлов. Для этой цели я интегрировал HIVE и HBase, но извлечение из HIVE занимает очень много времени. Я должен закончить это в течение 10 часов. Ищем вашу идею, как этого достичь. У меня есть некоторые вопросы относительно этого.что является самым быстрым способом извлечения данных из HBase
- Интеграция с HIVE HBase - хороший подход?
- Извлечение данных из HBase с использованием mapreduce будет хорошей идеей?
- Я не могу использовать Apache Phoenix, потому что он не был выпущен с HBase.
- IMPALA также использует высокую память, поэтому мой кластер не настроен для этого.
public int run(String[] args) throws Exception {
int result = 0;
if (hbaseConf == null)
hbaseConf = getHbaseConfiguration();
Job job = new Job(hbaseConf);
job.setJarByClass(HBaseToFileDriver.class);
job.setJobName("Importing Data from HBase to File:::" + args[0]);
Scan scan = new Scan();
scan.setCaching(5000); // 1 is the default in Scan, which will be bad
// for
// MapReduce jobs
scan.setCacheBlocks(false); // don't set to true for MR jobs
scan.addFamily(Bytes.toBytes("cf"));
TableMapReduceUtil.initTableMapperJob(args[0], scan, MyMapper.class, null, null, job);
// No reducers. Just write straight to output files.
job.setNumReduceTasks(0);
job.setOutputFormatClass(SequenceFileOutputFormat.class);
job.setOutputKeyClass(ImmutableBytesWritable.class);
job.setOutputValueClass(Result.class);
FileOutputFormat.setOutputPath(job, new Path(args[1]));
boolean b = job.waitForCompletion(true);
if (!b) {
throw new IOException("error with job!");
}
return result;
}
}
Мои данные в 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
Да на самом деле это было полезно. Я реализую его. У меня есть одно сомнение в том, что я должен создавать разные текстовые файлы на основе фильтра сканирования в ключе. Как я могу это сделать? – SUDARSHAN
Я также обновил свой вопрос с импликацией. – SUDARSHAN
понял, что вы пытаетесь сделать файл последовательности на основе результатов сканирования. Что вы пытаетесь сделать? можете ли вы привести некоторые данные примера? –