当前位置: 首页 > 知识库问答 >
问题:

[Cassandra]在spark作业中的Cassandra sql中的行键级别进行筛选,导致cpu利用率过剩

梁宏才
2023-03-14
JavaRDD<CassandraRow> cassandraRDD = functions.cassandraTable("keyspace","column_family").
select("timeline_id","shopper_id","product_id").where("action=?", "Viewed")
CREATE TABLE keyspace.column_family (
    action text,
    timeline_id timeuuid,
    shopper_id text,
    product_id text,
    publisher_id text,
    referer text,
    remote_ip text,
    seed_product text,
    strategy text,
    user_agent text,
    PRIMARY KEY (action, timeline_id, shopper_id)
) WITH CLUSTERING ORDER BY (timeline_id DESC, shopper_id ASC)
    AND bloom_filter_fp_chance = 0.01
    AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'}
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99.0PERCENTILE';

共有1个答案

隗高旻
2023-03-14

好吧,您这里有一个数据模型问题。action=分区键,因此所有类似的操作都存储在单个分区中=(一个节点+副本)。

你总共有多少不同的行动?你对热点的直觉是合理的。

您可能需要一个不同的分区键,或者需要向分区键添加一个额外的列,以便Cassandra在集群上均匀地分配数据。

 类似资料:
  • 我的理解是,行键只不过是分区键,即日、小时列组成行键。 我的理解正确吗?有人能澄清这一点吗?

  • 我在spark中有以下命令, 有一组单词,data有三个字符串列,取自。 现在,只要中每个单词的单词模式出现在三列数据中的任何一列中,我就希望过滤掉数据中的行(spark dataframe)。 例如,如果有诸如之类的单词,并且如果三列数据中的任何一列包含诸如、等值,我希望过滤掉该行。 我尝试了以下方法: 这只适用于一个词。但是我想检查中的所有单词并删除它。有办法做到这一点吗? 我对Pyspark

  • 此外,它在spark cassandra Connector1.4中工作,但不是与最新的cassandra Connector1.6.0-M1一起工作。请让我知道这个问题

  • 想象一个电子商务应用程序: 假设我有三个并且我的一致性级别(CL)很弱:即 我有一个产品表,例如 这是跨三个节点同步的初始数据 > 现在,客户端A从N1读取信息,客户端B从N2读取信息 客户端1看到1台计算机可用 客户端 2 看到 1 台计算机可用 他们现在都去购买客户A先下订单。所以N1,表格如下所示: 现在客户端 2 下订单,因此在 N2 处,表将如下所示: 但实际上客户2的订单不应该被处理。

  • 而且,查询只请求插入的一小部分最新行。我现在遇到的问题是,这些查询的性能与表大小呈负相关。随着表的增长,即使查询只返回几行,获取响应的时间也要长得多。 您能否建议我应该如何修改表模式以避免性能下降(例如,创建索引或设置集群)?谢了!