如何指示配置单元在查询cassandra时使用分区/主键

14ifxucb  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(357)

我们正在运行DataStaxEnterprise4.0.1,并尝试在cassandra中针对cf运行不同的m/r作业。我们设置了列族:

CREATE TABLE pageviews (
  website text,
  date text,
  created timestamp,
  browser_id text,
  ip text,
  referer text,
  user_agent text,
  PRIMARY KEY ((website, date), created, browser_id)
) WITH bloom_filter_fp_chance=0.001000 AND
  caching='KEYS_ONLY' AND
  comment='' AND
  dclocal_read_repair_chance=0.000000 AND
  gc_grace_seconds=864000 AND
  index_interval=128 AND
  read_repair_chance=1.000000 AND
  replicate_on_write='true' AND
  populate_io_cache_on_flush='false' AND
  default_time_to_live=0 AND
  speculative_retry='NONE' AND
  memtable_flush_period_in_ms=0 AND
  compaction={'min_sstable_size': '52428800', 'class': 'SizeTieredCompactionStrategy'} AND
  compression={'chunk_length_kb': '64', 'sstable_compression': 'LZ4Compressor'};

hive的好处是它处理cql3“扁平化”,以抽象cassandra的底层列/行存储机制。缺点似乎是它不使用cassandra的分区键或主键来执行快速查找,例如。

SELECT COUNT(1) WHERE website = "blah" AND date = "blah";

运行mr作业似乎是执行一个完整的表扫描,而不是预先缩小要解析的键的范围。如果基于分区/主键的过滤有明显的好处,是否可以告诉hive不要执行全表扫描?
旁注:当使用pig时,它似乎可以并且确实使用cassandra的分区/主键来执行快速查找。Pig的缺点是,我们必须做我们所有的过滤和扁平化自己-大大阻碍了时间创造就业机会。

2o7dmzc5

2o7dmzc51#

最好的方法是使用pig,并使用cql://with cqlstorage(),这将为您完成繁重的cassandra数据展平工作,例如。

grunt> pageviews = LOAD 'cql://ks/pageviews' USING CqlStorage();
grunt> describe pageviews;
grunt> pageviews: {website: chararray,date: chararray,created: long,browser_id: chararray,ip: chararray,referer: chararray,user_agent: chararray}

相关问题