当前位置: 首页>>代码示例>>Java>>正文


Java CellUtil.tagsIterator方法代码示例

本文整理汇总了Java中org.apache.hadoop.hbase.CellUtil.tagsIterator方法的典型用法代码示例。如果您正苦于以下问题:Java CellUtil.tagsIterator方法的具体用法?Java CellUtil.tagsIterator怎么用?Java CellUtil.tagsIterator使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.hadoop.hbase.CellUtil的用法示例。


在下文中一共展示了CellUtil.tagsIterator方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: checkForReservedVisibilityTagPresence

import org.apache.hadoop.hbase.CellUtil; //导入方法依赖的package包/类
/**
 * Checks whether cell contains any tag with type as VISIBILITY_TAG_TYPE. This
 * tag type is reserved and should not be explicitly set by user. There are
 * two versions of this method one that accepts pair and other without pair.
 * In case of preAppend and preIncrement the additional operations are not
 * needed like checking for STRING_VIS_TAG_TYPE and hence the API without pair
 * could be used.
 *
 * @param cell
 * @return true or false
 * @throws IOException
 */
private boolean checkForReservedVisibilityTagPresence(Cell cell) throws IOException {
  // Bypass this check when the operation is done by a system/super user.
  // This is done because, while Replication, the Cells coming to the peer
  // cluster with reserved
  // typed tags and this is fine and should get added to the peer cluster
  // table
  if (isSystemOrSuperUser()) {
    return true;
  }
  if (cell.getTagsLength() > 0) {
    Iterator<Tag> tagsItr = CellUtil.tagsIterator(cell.getTagsArray(), cell.getTagsOffset(),
        cell.getTagsLength());
    while (tagsItr.hasNext()) {
      if (RESERVED_VIS_TAG_TYPES.contains(tagsItr.next().getType())) {
        return false;
      }
    }
  }
  return true;
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:33,代码来源:VisibilityController.java

示例2: extractVisibilityTags

import org.apache.hadoop.hbase.CellUtil; //导入方法依赖的package包/类
/**
 * Extract the visibility tags of the given Cell into the given List
 * @param cell - the cell
 * @param tags - the array that will be populated if visibility tags are present
 * @return The visibility tags serialization format
 */
public static Byte extractVisibilityTags(Cell cell, List<Tag> tags) {
  Byte serializationFormat = null;
  if (cell.getTagsLength() > 0) {
    Iterator<Tag> tagsIterator = CellUtil.tagsIterator(cell.getTagsArray(), cell.getTagsOffset(),
        cell.getTagsLength());
    while (tagsIterator.hasNext()) {
      Tag tag = tagsIterator.next();
      if (tag.getType() == TagType.VISIBILITY_EXP_SERIALIZATION_FORMAT_TAG_TYPE) {
        serializationFormat = tag.getBuffer()[tag.getTagOffset()];
      } else if (tag.getType() == VISIBILITY_TAG_TYPE) {
        tags.add(tag);
      }
    }
  }
  return serializationFormat;
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:23,代码来源:VisibilityUtils.java

示例3: extractAndPartitionTags

import org.apache.hadoop.hbase.CellUtil; //导入方法依赖的package包/类
/**
 * Extracts and partitions the visibility tags and nonVisibility Tags
 *
 * @param cell - the cell for which we would extract and partition the
 * visibility and non visibility tags
 * @param visTags
 *          - all the visibilty tags of type TagType.VISIBILITY_TAG_TYPE would
 *          be added to this list
 * @param nonVisTags - all the non visibility tags would be added to this list
 * @return - the serailization format of the tag. Can be null if no tags are found or
 * if there is no visibility tag found
 */
public static Byte extractAndPartitionTags(Cell cell, List<Tag> visTags,
    List<Tag> nonVisTags) {
  Byte serializationFormat = null;
  if (cell.getTagsLength() > 0) {
    Iterator<Tag> tagsIterator = CellUtil.tagsIterator(cell.getTagsArray(), cell.getTagsOffset(),
        cell.getTagsLength());
    while (tagsIterator.hasNext()) {
      Tag tag = tagsIterator.next();
      if (tag.getType() == TagType.VISIBILITY_EXP_SERIALIZATION_FORMAT_TAG_TYPE) {
        serializationFormat = tag.getBuffer()[tag.getTagOffset()];
      } else if (tag.getType() == VISIBILITY_TAG_TYPE) {
        visTags.add(tag);
      } else {
        // ignore string encoded visibility expressions, will be added in replication handling
        nonVisTags.add(tag);
      }
    }
  }
  return serializationFormat;
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:33,代码来源:VisibilityUtils.java

示例4: addCellPermissions

import org.apache.hadoop.hbase.CellUtil; //导入方法依赖的package包/类
private static void addCellPermissions(final byte[] perms, Map<byte[], List<Cell>> familyMap) {
  // Iterate over the entries in the familyMap, replacing the cells therein
  // with new cells including the ACL data
  for (Map.Entry<byte[], List<Cell>> e: familyMap.entrySet()) {
    List<Cell> newCells = Lists.newArrayList();
    for (Cell cell: e.getValue()) {
      // Prepend the supplied perms in a new ACL tag to an update list of tags for the cell
      List<Tag> tags = Lists.newArrayList(new Tag(AccessControlLists.ACL_TAG_TYPE, perms));
      if (cell.getTagsLength() > 0) {
        Iterator<Tag> tagIterator = CellUtil.tagsIterator(cell.getTagsArray(),
          cell.getTagsOffset(), cell.getTagsLength());
        while (tagIterator.hasNext()) {
          tags.add(tagIterator.next());
        }
      }
      newCells.add(new TagRewriteCell(cell, Tag.fromList(tags)));
    }
    // This is supposed to be safe, won't CME
    e.setValue(newCells);
  }
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:22,代码来源:AccessController.java

示例5: toStringMap

import org.apache.hadoop.hbase.CellUtil; //导入方法依赖的package包/类
private static Map<String, Object> toStringMap(Cell cell) {
  Map<String, Object> stringMap = new HashMap<String, Object>();
  stringMap.put("row",
      Bytes.toStringBinary(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength()));
  stringMap.put("family", Bytes.toStringBinary(cell.getFamilyArray(), cell.getFamilyOffset(),
              cell.getFamilyLength()));
  stringMap.put("qualifier",
      Bytes.toStringBinary(cell.getQualifierArray(), cell.getQualifierOffset(),
          cell.getQualifierLength()));
  stringMap.put("timestamp", cell.getTimestamp());
  stringMap.put("vlen", cell.getValueLength());
  if (cell.getTagsLength() > 0) {
    List<String> tagsString = new ArrayList<String>();
    Iterator<Tag> tagsIterator = CellUtil.tagsIterator(cell.getTagsArray(), cell.getTagsOffset(),
        cell.getTagsLength());
    while (tagsIterator.hasNext()) {
      Tag tag = tagsIterator.next();
      tagsString.add((tag.getType()) + ":"
          + Bytes.toStringBinary(tag.getBuffer(), tag.getTagOffset(), tag.getTagLength()));
    }
    stringMap.put("tag", tagsString);
  }
  return stringMap;
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:25,代码来源:WALPrettyPrinter.java

示例6: postMutationBeforeWAL

import org.apache.hadoop.hbase.CellUtil; //导入方法依赖的package包/类
@Override
public Cell postMutationBeforeWAL(ObserverContext<RegionCoprocessorEnvironment> ctx,
    MutationType opType, Mutation mutation, Cell oldCell, Cell newCell) throws IOException {
  List<Tag> tags = Lists.newArrayList();
  CellVisibility cellVisibility = null;
  try {
    cellVisibility = mutation.getCellVisibility();
  } catch (DeserializationException e) {
    throw new IOException(e);
  }
  if (cellVisibility == null) {
    return newCell;
  }
  // Prepend new visibility tags to a new list of tags for the cell
  // Don't check user auths for labels with Mutations when the user is super user
  boolean authCheck = authorizationEnabled && checkAuths && !(isSystemOrSuperUser());
  tags.addAll(this.visibilityLabelService.createVisibilityExpTags(cellVisibility.getExpression(),
      true, authCheck));
  // Save an object allocation where we can
  if (newCell.getTagsLength() > 0) {
    // Carry forward all other tags
    Iterator<Tag> tagsItr = CellUtil.tagsIterator(newCell.getTagsArray(),
        newCell.getTagsOffset(), newCell.getTagsLength());
    while (tagsItr.hasNext()) {
      Tag tag = tagsItr.next();
      if (tag.getType() != TagType.VISIBILITY_TAG_TYPE
          && tag.getType() != TagType.VISIBILITY_EXP_SERIALIZATION_FORMAT_TAG_TYPE) {
        tags.add(tag);
      }
    }
  }

  Cell rewriteCell = new TagRewriteCell(newCell, Tag.fromList(tags));
  return rewriteCell;
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:36,代码来源:VisibilityController.java

示例7: isVisibilityTagsPresent

import org.apache.hadoop.hbase.CellUtil; //导入方法依赖的package包/类
public static boolean isVisibilityTagsPresent(Cell cell) {
  if (cell.getTagsLength() == 0) {
    return false;
  }
  Iterator<Tag> tagsIterator = CellUtil.tagsIterator(cell.getTagsArray(), cell.getTagsOffset(),
      cell.getTagsLength());
  while (tagsIterator.hasNext()) {
    Tag tag = tagsIterator.next();
    if (tag.getType() == VISIBILITY_TAG_TYPE) {
      return true;
    }
  }
  return false;
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:15,代码来源:VisibilityUtils.java

示例8: getCellPermissionsForUser

import org.apache.hadoop.hbase.CellUtil; //导入方法依赖的package包/类
public static List<Permission> getCellPermissionsForUser(User user, Cell cell)
    throws IOException {
  // Save an object allocation where we can
  if (cell.getTagsLength() == 0) {
    return null;
  }
  List<Permission> results = Lists.newArrayList();
  Iterator<Tag> tagsIterator = CellUtil.tagsIterator(cell.getTagsArray(), cell.getTagsOffset(),
     cell.getTagsLength());
  while (tagsIterator.hasNext()) {
    Tag tag = tagsIterator.next();
    if (tag.getType() == ACL_TAG_TYPE) {
      // Deserialize the table permissions from the KV
      // TODO: This can be improved. Don't build UsersAndPermissions just to unpack it again,
      // use the builder
      AccessControlProtos.UsersAndPermissions.Builder builder = 
        AccessControlProtos.UsersAndPermissions.newBuilder();
      ProtobufUtil.mergeFrom(builder, tag.getBuffer(), tag.getTagOffset(), tag.getTagLength());
      ListMultimap<String,Permission> kvPerms =
        ProtobufUtil.toUsersAndPermissions(builder.build());
      // Are there permissions for this user?
      List<Permission> userPerms = kvPerms.get(user.getShortName());
      if (userPerms != null) {
        results.addAll(userPerms);
      }
      // Are there permissions for any of the groups this user belongs to?
      String groupNames[] = user.getGroupNames();
      if (groupNames != null) {
        for (String group : groupNames) {
          List<Permission> groupPerms = kvPerms.get(AuthUtil.toGroupEntry(group));
          if (results != null) {
            results.addAll(groupPerms);
          }
        }
      }
    }
  }
  return results;
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:40,代码来源:AccessControlLists.java

示例9: checkForReservedTagPresence

import org.apache.hadoop.hbase.CellUtil; //导入方法依赖的package包/类
private void checkForReservedTagPresence(User user, Mutation m) throws IOException {
  // No need to check if we're not going to throw
  if (!authorizationEnabled) {
    m.setAttribute(TAG_CHECK_PASSED, TRUE);
    return;
  }
  // Superusers are allowed to store cells unconditionally.
  if (Superusers.isSuperUser(user)) {
    m.setAttribute(TAG_CHECK_PASSED, TRUE);
    return;
  }
  // We already checked (prePut vs preBatchMutation)
  if (m.getAttribute(TAG_CHECK_PASSED) != null) {
    return;
  }
  for (CellScanner cellScanner = m.cellScanner(); cellScanner.advance();) {
    Cell cell = cellScanner.current();
    if (cell.getTagsLength() > 0) {
      Iterator<Tag> tagsItr = CellUtil.tagsIterator(cell.getTagsArray(), cell.getTagsOffset(),
        cell.getTagsLength());
      while (tagsItr.hasNext()) {
        if (tagsItr.next().getType() == AccessControlLists.ACL_TAG_TYPE) {
          throw new AccessDeniedException("Mutation contains cell with reserved type tag");
        }
      }
    }
  }
  m.setAttribute(TAG_CHECK_PASSED, TRUE);
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:30,代码来源:AccessController.java

示例10: carryForwardTags

import org.apache.hadoop.hbase.CellUtil; //导入方法依赖的package包/类
/**
 * @param cell
 * @param tags
 * @return The passed-in List<Tag> but with the tags from <code>cell</code> added.
 */
private static List<Tag> carryForwardTags(final Cell cell, final List<Tag> tags) {
  if (cell.getTagsLength() <= 0) return tags;
  List<Tag> newTags = tags == null ? new ArrayList<Tag>() : /* Append Tags */tags;
  Iterator<Tag> i =
      CellUtil.tagsIterator(cell.getTagsArray(), cell.getTagsOffset(), cell.getTagsLength());
  while (i.hasNext()) newTags.add(i.next());
  return newTags;
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:14,代码来源:HRegion.java

示例11: postMutationBeforeWAL

import org.apache.hadoop.hbase.CellUtil; //导入方法依赖的package包/类
@Override
public Cell postMutationBeforeWAL(ObserverContext<RegionCoprocessorEnvironment> ctx,
    MutationType opType, Mutation mutation, Cell oldCell, Cell newCell) throws IOException {
  // If the HFile version is insufficient to persist tags, we won't have any
  // work to do here
  if (!cellFeaturesEnabled) {
    return newCell;
  }

  // Collect any ACLs from the old cell
  List<Tag> tags = Lists.newArrayList();
  ListMultimap<String,Permission> perms = ArrayListMultimap.create();
  if (oldCell != null) {
    // Save an object allocation where we can
    if (oldCell.getTagsLength() > 0) {
      Iterator<Tag> tagIterator = CellUtil.tagsIterator(oldCell.getTagsArray(),
        oldCell.getTagsOffset(), oldCell.getTagsLength());
      while (tagIterator.hasNext()) {
        Tag tag = tagIterator.next();
        if (tag.getType() != AccessControlLists.ACL_TAG_TYPE) {
          // Not an ACL tag, just carry it through
          if (LOG.isTraceEnabled()) {
            LOG.trace("Carrying forward tag from " + oldCell + ": type " + tag.getType() +
              " length " + tag.getTagLength());
          }
          tags.add(tag);
        } else {
          // Merge the perms from the older ACL into the current permission set
          // TODO: The efficiency of this can be improved. Don't build just to unpack
          // again, use the builder
          AccessControlProtos.UsersAndPermissions.Builder builder =
            AccessControlProtos.UsersAndPermissions.newBuilder();
          ProtobufUtil.mergeFrom(builder, tag.getBuffer(), tag.getTagOffset(), tag.getTagLength());
          ListMultimap<String,Permission> kvPerms =
            ProtobufUtil.toUsersAndPermissions(builder.build());
          perms.putAll(kvPerms);
        }
      }
    }
  }

  // Do we have an ACL on the operation?
  byte[] aclBytes = mutation.getACL();
  if (aclBytes != null) {
    // Yes, use it
    tags.add(new Tag(AccessControlLists.ACL_TAG_TYPE, aclBytes));
  } else {
    // No, use what we carried forward
    if (perms != null) {
      // TODO: If we collected ACLs from more than one tag we may have a
      // List<Permission> of size > 1, this can be collapsed into a single
      // Permission
      if (LOG.isTraceEnabled()) {
        LOG.trace("Carrying forward ACLs from " + oldCell + ": " + perms);
      }
      tags.add(new Tag(AccessControlLists.ACL_TAG_TYPE,
        ProtobufUtil.toUsersAndPermissions(perms).toByteArray()));
    }
  }

  // If we have no tags to add, just return
  if (tags.isEmpty()) {
    return newCell;
  }

  Cell rewriteCell = new TagRewriteCell(newCell, Tag.fromList(tags));
  return rewriteCell;
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:69,代码来源:AccessController.java

示例12: testSeekBeforeInternals

import org.apache.hadoop.hbase.CellUtil; //导入方法依赖的package包/类
protected void testSeekBeforeInternals(TagUsage tagUsage) throws IOException {
  Path p = makeNewFile(tagUsage);
  FileSystem fs = TEST_UTIL.getTestFileSystem();
  Configuration conf = TEST_UTIL.getConfiguration();
  HFile.Reader reader = HFile.createReader(fs, p, new CacheConfig(conf), conf);
  reader.loadFileInfo();
  HFileScanner scanner = reader.getScanner(false, true);
  assertEquals(false, scanner.seekBefore(toKV("a", tagUsage)));

  assertEquals(false, scanner.seekBefore(toKV("c", tagUsage)));

  assertEquals(true, scanner.seekBefore(toKV("d", tagUsage)));
  assertEquals("c", toRowStr(scanner.getKeyValue()));

  assertEquals(true, scanner.seekBefore(toKV("e", tagUsage)));
  assertEquals("c", toRowStr(scanner.getKeyValue()));

  assertEquals(true, scanner.seekBefore(toKV("f", tagUsage)));
  assertEquals("e", toRowStr(scanner.getKeyValue()));

  assertEquals(true, scanner.seekBefore(toKV("g", tagUsage)));
  assertEquals("e", toRowStr(scanner.getKeyValue()));

  assertEquals(true, scanner.seekBefore(toKV("h", tagUsage)));
  assertEquals("g", toRowStr(scanner.getKeyValue()));
  assertEquals(true, scanner.seekBefore(toKV("i", tagUsage)));
  assertEquals("g", toRowStr(scanner.getKeyValue()));
  assertEquals(true, scanner.seekBefore(toKV("j", tagUsage)));
  assertEquals("i", toRowStr(scanner.getKeyValue()));
  Cell cell = scanner.getKeyValue();
  if (tagUsage != TagUsage.NO_TAG && cell.getTagsLength() > 0) {
    Iterator<Tag> tagsIterator = CellUtil.tagsIterator(cell.getTagsArray(), cell.getTagsOffset(),
        cell.getTagsLength());
    while (tagsIterator.hasNext()) {
      Tag next = tagsIterator.next();
      assertEquals("myTag1", Bytes.toString(next.getValue()));
    }
  }
  assertEquals(true, scanner.seekBefore(toKV("k", tagUsage)));
  assertEquals("i", toRowStr(scanner.getKeyValue()));
  assertEquals(true, scanner.seekBefore(toKV("l", tagUsage)));
  assertEquals("k", toRowStr(scanner.getKeyValue()));

  reader.close();
  deleteTestDir(fs);
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:47,代码来源:TestSeekTo.java


注:本文中的org.apache.hadoop.hbase.CellUtil.tagsIterator方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。