• DataStax Bulk Loader教程(五)


    DataStax Bulk Loader系列教程共分为六篇,这是此系列的第五篇。本系列前三篇文章涉及数据加载(load),第四篇文章介绍了数据卸载(unload)。本文将讲述dsbulk的计数(count)模式。

    另外,我们也建议您在使用dsbulk时参考dsbulk 文档页面,从而了解所有的相关参数和选项。


      

    Dsbulk 1.1.0 引入了在表格中计数的新功能。当数据加载完成时,人们经常使用计数功能,以确保数据正确加载。他们可能因为在加载中失败了,想查看加载了多少数据。也有可能是因为主键不是所需要的主键,所以不是唯一的插入,而是将原来数据覆盖掉。

    范例 23:简易的计数案例

    让我们开始从简单的计数开始:

    $ dsbulk count -k dsbulkblog -t iris_with_id

    或者:

    $ dsbulk count -k dsbulkblog -t iris_with_id --stats.modes global

    或者:

    $ dsbulk count -k dsbulkblog -t iris_with_id -stats global

    这些都有相同的输出:

    Operation directory: /tmp/logs/COUNT_20190314-171517-238903.
    total | failed | rows/s | mb/s | kb/row | p50 ms | p99ms | p999ms  
       150 |      0 | 400 | 0.00 |   0.00 | 18.68 | 18.74 |  18.74
    Operation COUNT_20190314-171517-238903 completed successfully in 0 seconds.
    150

    范例 24:计数时不打印多余信息

    我们可以通过以下方法减少冗长的内容,以删除多余无关的信息:

    $ dsbulk count -k dsbulkblog -t iris_with_id --log.verbosity 0

    只会有以下结果:

    150

    范例 25:按主机(host)计数

    有很多不同方法可以对计数进行分组。第一种是按主机分类,计算行数:

    $ dsbulk count -k dsbulkblog -t iris_with_id --log.verbosity 0 --stats.mode hosts

    因为我在我本地主机上做了演示,所以只会有一个主机。输出将是:

    /127.0.0.1:9042 150 100.00

    第一列是主机,第二列是计数结果,第三列是占总列数的百分比。

    范例 26:按Token范围计数

    有时候在系统中了解每一个token ranges 是很重要的。我们可以用 ranges 模式来完成:

    $ dsbulk count -k dsbulkblog -t iris_with_id --log.verbosity 0 --stats.mode ranges

    同时,在一个主机上的运行的结果有一些太简易了:

    -9223372036854775808 -9223372036854775808 150 100.00

    在这里我们可以看到token 范围的起点和终点,(再一次强调,这里情况有些特殊因为只有一个token范围),计数数量还有百分比。

    范例 27:计算最大的分区

    partitions 选项将根据每个分区行数来计算最大的分区。为了完成这个我们需要创建一个含有集群列的表格。让我们使用以下方法处理Iris的数据集:

    $ cqlsh -e "CREATE TABLE dsbulkblog.iris_clustered(id INT, petal_length DOUBLE, petal_width DOUBLE, sepal_length DOUBLE, sepal_width DOUBLE, species TEXT, PRIMARY KEY ((species), id))"
     

    我们可以这样加载 iris.csv 的数据:

    $ dsbulk load -url /tmp/dsbulkblog/iris.csv -k dsbulkblog -t iris_clustered

    现在我们可以这样计数最大的分区:

    $ dsbulk count -k dsbulkblog -t iris_clustered --log.verbosity 0 --stats.mode partitions

    以下是这个的输出结果:

    'Iris-virginica' 50 33.33
    'Iris-versicolor' 50 33.33
    'Iris-setosa' 50 33.33

    第一列是分区的主键值,第二列是计数列,第三列是占整行的百分比。

    范例 28:按token 范围和主机计数

    --stats.mode 参数有一系列的模式,例如:

    $ dsbulk count -k dsbulkblog -t iris_with_id --log.verbosity 0 --stats.mode ranges,hosts

    以下是结果:

    Total rows per host:
    /127.0.0.1:9042 150 100.00
    Total rows per token range:
    -9223372036854775808 -9223372036854775808 150 100.00

    范例 29:计数时使用谓词(predicate)

    您有时候想过滤或只计数一些记录。我们可以用--schema.query(或 -q)来指定谓词。这种情况下,如果要卸载数据,我们需要首先提供一个全局查询(SELECT *)语句,但dsbulk会计算结果。

    例如,如果我们只想给petal_width = 2的数据计数,我们可以使用:

    $ dsbulk count -query "SELECT id FROM dsbulkblog.iris_with_id WHERE petal_width = 2 ALLOW FILTERING"

    这会产生以下结果:

    Operation directory: /tmp/logs/COUNT_20190314-171916-543786.
    total | failed | rows/s | mb/s | kb/row | p50 ms |  p99ms | p999ms        
    6 |      0 | 18 | 0.00 |   0.00 | 130.81 | 131.07 | 131.07
    Operation COUNT_20190314-171916-543786 completed successfully in 0 seconds.
    6

    我们可以给以下查询操作添加并行性:

    $ dsbulk count -query "SELECT id FROM dsbulkblog.iris_with_id WHERE Petal_width = 2 AND Token(id) > :start AND Token(id) <= :end ALLOW FILTERING"

    点击这里下载 DataStax Bulk Loader。

     

    本系列所有文章:

     

     
  • 相关阅读:
    IDEA中代码无故报红解决方法
    CAP原则的基本理论知识
    Java IO 拷贝MP3文件,包括递归子文件夹下的文件
    maven 配置阿里云镜像 settings.xml内容
    Restful API 级别及意义
    日常巡检(脚本)
    使用Matplotlib画图系列(一)
    Python 阶乘factorial
    交叉验证思想
    FeatureSelectors
  • 原文地址:https://www.cnblogs.com/datastax/p/13876329.html
Copyright © 2020-2023  润新知