使用Spark删除HBase单元格

用户名

是否有可用的API使用Spark Scala删除特定的HBase单元。我们能够使用Spark-HBase Connector进行读写。任何有关细胞缺失的建议都是非常可取的。

包起来

这是一个Cell使用Spark删除HBase对象的实现(我已经使用进行了演示parallelize,您可以将其调整为Cells RDD)。

总体思路:逐块删除-遍历每个RDD分区,将该分区拆分为10,000个单元的块,将每个单元转换为HBaseDelete对象,然后调用table.delete()以从HBase进行删除。

public void deleteCells(List<Cell> cellsToDelete) {

    JavaSparkContext sc = new JavaSparkContext();

    sc.parallelize(cellsToDelete)
        .foreachPartition(cellsIterator -> {
            int chunkSize = 100000; // Will contact HBase only once per 100,000 records

            org.apache.hadoop.conf.Configuration config = new org.apache.hadoop.conf.Configuration();
            config.set("hbase.zookeeper.quorum", "YOUR-ZOOKEEPER-HOSTNAME");

            Table table;

            try {
                Connection connection = ConnectionFactory.createConnection(config);
                table = connection.getTable(TableName.valueOf(config.get("YOUR-HBASE-TABLE")));
            }
            catch (IOException e)
            {
                logger.error("Failed to connect to HBase due to inner exception: " + e);

                return;
            }

            // Split the given cells iterator to chunks
            Iterators.partition(cellsIterator, chunkSize)
                .forEachRemaining(cellsChunk -> {
                    List<Delete> deletions = Lists.newArrayList(cellsChunk
                            .stream()
                            .map(cell -> new Delete(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())
                                    .addColumn(cell.getFamily(), cell.getQualifier(), System.currentTimeMillis()))
                            .iterator());

                    try {
                        table.delete(deletions);
                    } catch (IOException e) {
                        logger.error("Failed to delete a chunk due to inner exception: " + e);
                    }
                });

        });
}

免责声明:这个确切的代码片段未经测试,但是我使用相同的方法通过Spark删除了数十亿个HBase Cell。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用删除按钮删除 UITableView 单元格?

来自分类Dev

删除单元格的压痕

来自分类Dev

删除空白单元格

来自分类Dev

滑动以使用NSFetchedResultsController删除表中的单元格

来自分类Dev

删除Arrayformula中未使用的单元格

来自分类Dev

使用VLOOKUP VBA删除单元格值

来自分类Dev

宏以使用其引用删除单元格的内容

来自分类Dev

使用按钮删除单元格行时出错

来自分类Dev

使用VBA删除具有零的单元格

来自分类Dev

如何使用 JQuery 删除表格单元格的某些元素

来自分类Dev

在 Swift 中使用 Parse 删除表格视图单元格

来自分类Dev

如何从uitableview单元格中删除单元格

来自分类Dev

删除单元格ipython 2.0

来自分类Dev

搜索单元格并删除(公式)

来自分类Dev

根据单元格值删除列

来自分类Dev

从单元格中删除UICollectionViewCell

来自分类Dev

如何删除单个单元格?

来自分类Dev

删除空白单元格(向上移动)

来自分类Dev

从范围(对象)中删除单元格

来自分类Dev

从单元格中删除字符

来自分类Dev

UICollectionView动画删除单元格

来自分类Dev

VBA条件格式+删除单元格

来自分类Dev

如何删除datagridview单元格?

来自分类Dev

基于活动单元格删除行

来自分类Dev

删除表格单元格末尾的空白

来自分类Dev

删除相邻的单元格(如果重复)?

来自分类Dev

删除空单元格(非常慢)

来自分类Dev

删除行,直到单元格=“ Total”

来自分类Dev

删除UItableview单元格选择按钮?