/** * Constructor. * * @param context Task attempt context. * @param lgLayout Layout of the locality group. * @throws IOException on I/O error. */ public LocalityGroupRecordWriter(TaskAttemptContext context, LocalityGroupLayout lgLayout) throws IOException { mLGLayout = Preconditions.checkNotNull(lgLayout); mFamily = lgLayout.getId().toString(); // These parameters might be specific to each locality group: mMaxFileSizeBytes = mConf.getLong(CONF_HREGION_MAX_FILESIZE, DEFAULT_HREGION_MAX_FILESIZE); mBlockSizeBytes = mConf.getInt(CONF_HFILE_BLOCKSIZE, DEFAULT_HFILE_BLOCKSIZE); mFamilyDir = new Path(mOutputDir, mFamily); if (!mFileSystem.exists(mFamilyDir)) { if (!mFileSystem.mkdirs(mFamilyDir)) { throw new IOException(String.format( "Unable to create output directory: %s", mFamilyDir)); } } mCompressionType = mLGLayout.getDesc().getCompressionType().toString().toLowerCase(Locale.ROOT); mWriter = openNewWriter(); }
/** * Translates a Fiji locality group into an HColumnDescriptor. * * @param localityGroup A Fiji locality group. * @param hbaseColumnNameTranslator to convert the locality group into the HBase family. * @return The HColumnDescriptor to use for storing the data in the locality group. */ private static HColumnDescriptor toHColumnDescriptor( final LocalityGroupLayout localityGroup, final HBaseColumnNameTranslator hbaseColumnNameTranslator ) { byte[] hbaseFamilyName = hbaseColumnNameTranslator.toHBaseFamilyName(localityGroup); LocalityGroupDesc groupDesc = localityGroup.getDesc(); return new HColumnDescriptor( hbaseFamilyName, groupDesc.getMaxVersions(), groupDesc.getCompressionType().toString(), groupDesc.getInMemory(), true, // block cache groupDesc.getBlockSize() != null ? groupDesc.getBlockSize() : HColumnDescriptor.DEFAULT_BLOCKSIZE, groupDesc.getTtlSeconds(), groupDesc.getBloomType() != null ? groupDesc.getBloomType().toString() : HColumnDescriptor.DEFAULT_BLOOMFILTER, HColumnDescriptor.DEFAULT_REPLICATION_SCOPE); } }