zoukankan      html  css  js  c++  java
  • Kudu文档

    使用Impala shell

    默认impala-shell连接localhost 21000

    如果要练一个不同的主机(host) 使用                    -i 主机名:端口号

    退出Impala shell                       使用                     quit

     内部表与外部表

    内部表:由Impala控制,当你使用Impala删除这个表的时候,这个表的数据和表格是被真正的删除了。一般创立新的表都是内部表。

    外部表:不受Impala控制,当你使用Impala删除这个表的时候,他并不会从Kudu原地址删除表,而是移除了Impala和Kudu的Mapping

     创建一个Kudu table

    Impala会先创建一个table,然后创建mapping

    1.某个字段为主键那么它必须要在建表语句前面

    2.创建一个表,你需要具体化一个分配方案,如何分配参见《Partitioning Rules of Thumb 》

    Partitioning Tables

    1.tables会根据   主键列分割模式 分割成tablets,理想的情况下,一个table应该被均匀的分配成tablets实现最大化并行操作。

    Basic Partitioning:

    PARTITION BY HASH:

    通过hash,将tablets分布在具体数量的“buckets”

    举个例子:

    CREATE TABLE cust_behavior (
      id BIGINT,
      sku STRING,
      salary STRING,
      edu_level INT,
      usergender STRING,
      `group` STRING,
      city STRING,
      postcode STRING,
      last_purchase_price FLOAT,
      last_purchase_date BIGINT,
      category STRING,
      rating INT,
      fulfilled_date BIGINT,
      PRIMARY KEY (id, sku)
    )
    PARTITION BY HASH PARTITIONS 16
    STORED AS KUDU;

    这个例子,通过哈希id和sku,创建了16个tablets,如果要查询sku列的部分值,可能需要读16个tablets。这可能不是最佳的分法。

    PARTITION BY RANGE:

    .Range partitioning in Kudu allows splitting a table based on specific values or ranges of values of the chosen partition keys. This allows you to balance parallelism in writes with scan efficiency.

    经验原则

    事实表:尽可能多的利用集群中的电脑

    维度表:确保每一个tablet有1GB的大小

     Insert Data 

    batch insert

    我们一般使用SELECT FROM 语法导入数据

     INSERT INTO my_kudu_table

    SELECT * FROM legacy_data_import_table; 

    主键唯一性冲突

    在大多数关系型数据库中,如果你插入一个曾经被插入过的行,插入操作会失败这是因为主键会重复。

    Impala不会让这项 query失败,它会产生一个警告,然后执行剩下的操作。

    如果插入的行命中注定会替代过去存在的行,使用Upsert 替代 Insert

    INSERT INTO my_first_table VALUES (99, "sarah");
    UPSERT INTO my_first_table VALUES (99, "zoe");
    -- the current value of the row is 'zoe'
  • 相关阅读:
    DevExpress v17.2新版亮点——CodeRush篇(三)
    DevExpress v17.2新版亮点——CodeRush篇(二)
    DevExpress v17.2新版亮点——CodeRush篇(一)
    MySQL性能优化
    什么是MongoDB?
    Redis的两种持久化方式对比
    Redis
    十六、Node.js-fs模块-流
    js中const,var,let区别
    十五、Node.js-fs模块(中)
  • 原文地址:https://www.cnblogs.com/liuguangshou123/p/13803384.html
Copyright © 2011-2022 走看看