【问题标题】:spark-cassandra-connector 3.0.0 - How to calculate directJoinSizeRatiospark-cassandra-connector 3.0.0 - 如何计算 directJoinSizeRatio
【发布时间】:2021-05-13 22:24:52
【问题描述】:

我有一个 16 节点的 cassandra 集群和一个根据 cfstats 的表,总共约为 (8.9 x 16 = )143Gb。我有一个复制因子 3(我不确定它是否相关),唯一分区键的数量是 4.827。我正在尝试计算比率,以便在每次我想加入超过 3.170 个分区键时将其关闭。

directJoinSizeRatio参数的公式为:

(table size * directJoinSizeRatio) > size of keys

但是,表大小到底指的是什么。它是 cfstats 在每个节点中所说的表的压缩大小的总和吗?是不是只有一个节点的表大小?

所以,就我而言,我有 4827 个 uuid 作为字符串。会不会:

143.000.000.000 bytes * parameter > 3170 *36 bytes?

8.900.000.000 bytes * parameter > 3170 *36 bytes?

这是否意味着我真的必须将参数分别降低到 0,000000798 或 0,000012822?

编辑 1

这是桌子:

CREATE TABLE experiment(
experimentid varchar,
description text,
rt float,
intensity float,
mz float,
identifier text,
chemical_formula text,
filename text,
PRIMARY KEY ((experimentid),description, rt, intensity, mz, identifier, chemical_formula, filename)

);

P.S.:该表有大约 22 亿条记录

编辑 2

我总是加入分区键,这就是为什么我猜它很快,即:

Dataset<Row> metlistinitial2 = sp.read().format("org.apache.spark.sql.cassandra")
                .options(new HashMap<String, String>() {
                    {
                        put("keyspace", "mdb");
                        put("table", "experiment");
                    }
                })
                .load().select(col("experimentid"), col("description"), col("intensity")).join(dfexplist,"experimentid").repartition(col("experimentid"));

然后可以有一些 groupby 或更多联接。

【问题讨论】:

    标签: join cassandra key partition spark-cassandra-connector


    【解决方案1】:

    因为您正在对分区键进行操作,所以您可能需要使用它们来计算所需的比率 - 在这种情况下,它应该是:3170/4827 ~= 0.657,但这并不精确,因为您的分区可能更小或更大,因此尺寸估计不会准确。另外,大小估计只是估计,所以不会很精确。我会尝试在 0.6-0.66 范围内使用该比率...

    【讨论】:

    • 最终我想要 2600 个键,所以这个 2600/4827 ~= 0,538 确实有意义!但似乎使用 directJoinSizeRatio=0.000000000000008 我得到大约 2600 个分区键!我猜桌子对于那些键来说是相当大的?
    • 你说的是分区键还是主键?
    • 非常有趣的问题!所以,当上面的公式中说“键的大小”时,它的意思是主键!!!!那么为什么我的比例这么小就说得通了!因为我的整个记录​​是主键!用表格的结构更新了问题!
    • 这是一个有趣的表结构,通常这么大的主键可能会导致更大的分区,如果你只加入它们可能会更慢。可以显示加入条件吗?
    • 当然,我把它放在EDIT 2中。主键这么大的原因是表的这8个字段以下的任何内容都可能不是唯一的。
    猜你喜欢
    • 2016-09-02
    • 2019-04-10
    • 2017-08-06
    • 2019-10-28
    • 2016-08-20
    • 2019-10-06
    • 1970-01-01
    • 2017-04-17
    • 2021-11-21
    相关资源
    最近更新 更多