【问题标题】:how to instruct Hive to use partition/primary key when querying Cassandra查询 Cassandra 时如何指示 Hive 使用分区/主键
【发布时间】:2014-05-12 14:21:45
【问题描述】:

我们正在运行 Datastax Enterprise 4.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 的缺点是我们必须自己进行所有过滤和扁平化 - 极大地阻碍了创造就业机会的时间。

【问题讨论】:

    标签: hadoop cassandra hive apache-pig datastax-enterprise


    【解决方案1】:

    最好的办法是使用 Pig,并将 cql:// 与 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}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-22
      • 2015-02-01
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 2018-10-11
      • 2018-10-03
      相关资源
      最近更新 更多