精华内容
下载资源
问答
  • BigTable知识点随记

    2019-05-29 16:01:46
    BigTable没有Schema用户需要自定义 数据的下标是行和列的名字 ...列族:列关键字组成的集合叫做“列族”,列族在使用之前必须先创建,然后才能在列族中任何的列关键字下存放数据,一张表的列族不能太多(最多几百个...
    • BigTable没有Schema用户需要自定义
    • 数据的下标是行和列的名字
    • BigTable是一个稀疏的分布式的持久化存储的多维序列Map,Map(row:string, column:string,time:int64)
    • 行:同一行关键字的读或者写都是原子的
    • 列族:列关键字组成的集合叫做“列族”,列族在使用之前必须先创建,然后才能在列族中任何的列关键字下存放数据,一张表的列族不能太多(最多几百个)
    • 时间戳:在BigTable中每一个数据项都可以包含同一份数据的不同版本,BigTable时间戳类型为64位整形精确到毫秒,有参数可以设置,只保存最后n个版本的数据
    • BigTable支持单行事物处理,目前不支持通用的跨行事物处理
    • BigTable内部存储的数据文件是Google SSTable格式的,SSTable是一个持久化排序的,不可更改的Map结构,Map是由K,V组成并且都是任意的Byte串,通常每个块大小是64KB,大小可配置
    • SSTable定位数据块:
      • 打开SSTable的时候,索引被加载到内存
      • 每次查找都可以通过一次磁盘搜多完成(首先使用二分查找方法在内存中的索引里找到数据块的位置,然后再从硬盘读取的相应的数据块)
    • BigTable依赖一个高可用的序列化的分布式锁服务组件叫做Chubby,Chubby由5个活跃副本,其中一个为Master,当有副本失效时使用Paxos算法来保证副本的一致性
    • BigTable使用Chubby完成以下几个任务
      • 确保在任何给定的时间内最多只有一个活动的Master副本
      • 存储BigTable数据的有引导指令的位置
      • 查找Tablet服务器,以及在Tablet服务器失效时进行善后
      • 存储BigTable模式信息(每张表的列族信息)
      • 以及存储访问控制列表
    展开全文
  • google bigtable 读书笔记

    2011-10-29 17:26:59
    1.一个行可以分成多个tablet(应该是一个...2.列关键字组成的集合叫做“列族“,列族是访问控制的基本单位。一张表中的列族不能太多(最多几百个),并且列族在运行期间很少改变。与之相对应的,一 张表可以有无限...
    1.一个行可以分成多个tablet(应该是一个tablet包含了相关的多个行记录),Tablet是数据分布和负载均衡调整的最小单位。这样做的结果是,当操作只读取行中很少几
    列的数据时效率很高,通常只需要很少几次机器间的通信即可完成。
    2.列关键字组成的集合叫做“列族“,列族是访问控制的基本单位。一张表中的列族不能太多(最多几百个),并且列族在运行期间很少改变。与之相对应的,一
    张表可以有无限多个列。
    3.BigTable内部存储数据的文件是Google SSTable格式的。SSTable是一个持久化的、排序的、不可更改的
    Map结构,而Map是一个key-value映射的数据结构,key和value的值都是任意的Byte串。可以对
    SSTable进行如下的操作:查询与一个key值相关的value,或者遍历某个key值范围内的所有的keyvalue对。也就是sstable可以进行range 操作?
    4.相较于mysql,bigtable可以让用户定制一些数据存储和分布方式,从而提高性能。
    展开全文
  • 问题场景: 有两个RDD的数据集A和B以及...以第一组成的元素作为关键字,第二作为值的集合。现要求映射对,使得在该映射关系下,B的值集合可以覆盖A的值几何的元素。如上结果应该为:(b, d)。因为A中以b为键...

    问题场景

    有两个RDD的数据集A和B(暂且分别称为新、老RDD)以及一组关于这两个RDD数据的映射关系,如下图所示:

    以及A和B的各元素映射关系的RDD,如下图所示:

    上述映射关系,代表元素ac同义,若为url,则表示指向同一个页面,元素bd同理。

    以第一列所组成的元素作为关键字,第二列作为值的集合。现要求映射对,使得在该映射关系下,B的值集合可以覆盖A的值几何的元素。如上结果应该为:(b, d)。因为A中以b为键的集合为B中以d为键的值集合的子集。
    受到单机编程的思维定势,使用HashMap实现,虽然可以运行,但是太慢啦啦,所以改用另一种思路,可以充分利用分布式的优点。

    解决方案

    val data = sc.textFile("/user/wuzhongqiang/clean_data/baidubaike_source.20180801/").cache()
    //1.以左边的为key,进行分组,统计每一个key所对应的值集合
    val groupData = data.map(item => {
        val key = item._1 
        val value = item._1
        (key, value)
    }).groupByKey
    
    //2. 读取链接映射文件至map
    //(AKey, BKey) 
    val projectionMap = sc.textFile("hdfs://projection").cache()
    // (AKey, BKey) 
    val aData = projectionMap.map(item => (item._1, item._2))
    // (BKey, AKey) 
    val bData = projectionMap.map(item => (item._2, item._1))
    // (AKey, (BKey, AValueSet)) 
    val aKeyJoinData = aData.join(groupData)
    // (BKey, (AKey, BValueSet)) 
    var bKeyJoinData = bData.join(groupData)
    // 交换新老键的位置,为后面的join做准备 (AKey, (BKey, BValueSet) )
    bKeyJoinData = nbKeyJoinData.map(item => {(item._2._1, (item._1, item._2._2))})
    //结果形式为(AKey, ((BKey, AValueSet), (BKey, BValueSet)))
    val aBData = aKeyJoinData.join(bKeyJoinData)
    aKeyJoinData.take(1).foreach(println)
    // oldUrl -> newUrl
    val resultMap = aBData.map(item => {
        val aValueSet = item._2._1._2.to[Set]
        val bValueAttrSet = item._2._2._2.to[Set]
        val subtractSet = aValueSet -- bValueAttrSet
        //若新的URL属性可以完全覆盖旧的url属性, 即 oldAttrSet与newAttrSet的差集为空
        if(subtractSet.isEmpty)
        	(item._1, item._2._1._1)
        else ("", "")
    }).filter(_._1 != "")
    resultMap.take(1).foreach(println)
    
    展开全文
  • 《桶排序 》中我们能够看到,数据值范围越大,可能需要桶个数也就越多,空间代价也就越高。对于上亿单位关键字,桶排序是很不实用。...一张牌有两个关键字组成:花色(桃   (1) 首先按照花色对所有

    桶排序 》中我们能够看到,数据值的范围越大,可能需要桶的个数也就越多,空间代价也就越高。对于上亿单位的关键字,桶排序是很不实用的。基数排序是对桶排序的一种改进,这种改进是让“桶排序”适合于更大的元素值集合的情况,而不是提高性能。

     

    多关键字排序问题(类似于字典序):

     

    我们先看看扑克牌的例子。一张牌有两个关键字组成:花色(桃<心<梅<方)+面值(2<3<4<...<A)。假如一张牌的大小首先被花色决定,同花色的牌有数字决定的话。我们就有两种算法来解决这个问题。

     

    (1) 首先按照花色对所有牌进行稳定排序,这样就可以将所有牌分成4组。然后同组的牌(同花色)再按照面值进行排序。

    (2) 首先按照面值对所有牌进行稳定排序,然后按照花色再次对所有牌进行稳定排序。

     

    显然,第一种方法需要将序列分割成几个子序列。而第二种方法则完全不需要。因此我们采用从次关键字排序开始的方法。


    基数排序

     

    上面的问题是多关键字的排序,但单关键字也仍然可以使用这种方式。

    比如字符串“abcd” “aesc” "dwsc" "rews"就可以把每个字符看成一个关键字。另外还有整数 425、321、235、432也可以每个位上的数字为一个关键字。

     

    基数排序的思想就是将待排数据中的每组关键字依次进行桶分配。比如下面的待排序列:

                     278、109、063、930、589、184、505、269、008、083

    我们将每个数值的个位,十位,百位分成三个关键字: 278 -> k1(个位)=8  ,k2(十位)=7 ,k3=(百位)=2。

    然后从最低位个位开始(从最次关键字开始),对所有数据的k1关键字进行桶分配(因为,每个数字都是 0-9的,因此桶大小为10),再依次输出桶中的数据得到下面的序列。

                           930、063、083、184、505、278、008、109、589、269

    再对上面的序列接着进行针对k2的桶分配,输出序列为:

                           505、008、109、930、063、269、278、083、184、589

    最后针对k3的桶分配,输出序列为:

                           008、063、083、109、184、269、278、505、589、930

     

    性能分析

     

    很明显,基数排序的性能比桶排序要略差。每一次关键字的桶分配都需要O(N)的时间复杂度,而且分配之后得到新的关键字序列又需要O(N)的时间复杂度。假如待排数据可以分为d个关键字,则基数排序的时间复杂度将是O(d*2N) ,当然d要远远小于N,因此基本上还是线性级别的。基数排序的空间复杂度为O(N+M),其中M为桶的数量。一般来说N>>M,因此额外空间需要大概N个左右。

     

    但是,对比桶排序,基数排序每次需要的桶的数量并不多。而且基数排序几乎不需要任何“比较”操作,而桶排序在桶相对较少的情况下,桶内多个数据必须进行基于比较操作的排序。因此,在实际应用中,基数排序的应用范围更加广泛。

     

    展开全文
  • 第3章表创建和操作

    2020-05-29 10:23:41
    组成列的名称及数据类型,统称为表结构。 记录。每个表包含了若干行数据,它们是表“值”,表中一行称为一个记录。因此表是记录有限集合。 字段。每个记录由若干个数据项构成,将构成记录每个数据段...
  • 文章目录第三章 - 关系数据库标准语言 SQL3.1 SQL 概述3.1.1 结构化查询语言 SQL3.1.2 SQL 体系结构3.1.3 SQL 的组成3.1.3 SQL 特点3.2 数据定义3.2.1 基本表操作1. 定义基本表2. 修改基本表3. 删除基本表3.2.2 ...
  • PostgreSQL SQL语言基本特性

    千次阅读 2011-03-16 17:01:00
    这里的集群与“集群运算”里的集群的含义是不同的,它只表示多个数据库的集合。一个PostgreSQL实例(PostgreSQL数据库进程加上它们占用共享内存)只能管理一个数据库集群。 <br />2.SQL语言中关键字和没有用双...
  • 数据库表是基本数据存储集合,由行和列组成。 数据库表要注意命名规则: 必须以字母开头 必须在 1–30 个字符之间 允许包含字符: A–Z, a–z, 0–9, _, $, 和 # 不能和用户定义其他对象(表)重名 不能是...
  • 11.1 插曲:类的组成部分名字 291 11.2 类中修饰符 292 11.2.1 无修饰符类 292 11.2.2 类可见性 293 11.2.3 final——让类不可被继承 295 11.2.4 理解final关键字 296 11.2.5 总结:类修饰符 297 ...
  • 映射 Map 是一种双列的集合。它由Key 关键字, 和Value值,组成。给出一个关键字,就能访问到值。它们是一一对应的。这与数学上的映射的意义是一样的。下面用1个例子说明一下Map接口的简单用法Hash 哈希,代表哈希值...
  • 11.1 插曲:类的组成部分名字 291 11.2 类中修饰符 292 11.2.1 无修饰符类 292 11.2.2 类可见性 293 11.2.3 final——让类不可被继承 295 11.2.4 理解final关键字 296 11.2.5 总结:类修饰符 297 ...
  • 11.1 插曲:类的组成部分名字 291 11.2 类中修饰符 292 11.2.1 无修饰符类 292 11.2.2 类可见性 293 11.2.3 final——让类不可被继承 295 11.2.4 理解final关键字 296 11.2.5 总结:类修饰符 297 ...
  • 数据库视频-入门知识

    2019-11-09 16:22:55
    数据库概念:数据存放地方,是有组织并可共享数据集合,具有较小冗余度,较高数据独立性和易扩展性,可谓不同用户使用。 数据模型:层次模型,从上往下 网状模型 关系模型 关系数据库:是由数据表和...
  • 1、数据库表是一系列二维数组的集合,用来存储数据和操作数据的逻辑结构,它由纵向的和横向的行组成,行被称为记录,是组织数据的单位;被称为字段,每一表示记录的一个属性。 2、主键主要用于唯一地标识表中...
  • SQL基础

    2014-05-08 15:45:20
    是存储在表中的一块数据,行是一组能够描述某个事物的列的集合。一些语法约定:SQL关键字建议大写(本身不区分大小写),便于区分关键字和名称;数据库、表、名称不能包含空格,可以使用下划线,首字母不建议...
  • SQL与关系数据库理论

    2011-10-22 19:51:00
    最初模式的一个回顾 最初的模型有3个主要的组成部分:结构,完整性和操作。 结构特性 关系是定义在类型上(也可以称之为域),一个类型基本上是值的概念池,从这个池中...换句话说,它是一个属性的集合,但常常不只是...
  • mysql语句概览

    2018-06-27 17:47:00
    数据库database:以某种有组织方式存储数据集合 表table:某种特定类型数据结构化清单 模式schema:关于数据库和表布局及特性信息 column:表中一个...关键字key word:作为mysql语言组成部分保...
  • 数据库database:以某种有组织方式存储数据集合表table:某种特定类型数据结构化清单模式schema...一(或一组),其值能够唯一区分表中每个行关键字key word:作为mysql语言组成部分保留字无值no value:N...
  • 表是相关数据项的集合,它由行和列组成。 SQL常用的关键字 SELECT -从数据中查询数据 UPDATE-更新数据库中的数据 DELETE-删除数据库中的数据 INSERT INTO-想数据库插入新数据 CREATE DATABASE-创建新的数据 ALTER ...
  • c语言 词法编译器

    2013-06-20 12:30:09
    (2) 关键字(从文法上看,关键字集合是标识符集合的集合):if,else,for,while,do,int; (3) 常数:由0~9数字组成; (4) 运算符:+、-、*、/等 (5) 分界符,(、)、,、;等单分界符;还有双字符...
  • LINGO软件学习

    2009-08-08 22:36:50
    如果限制派生集的成员,使它成为父集成员所有组合构成的集合的一个子集,这样的派生集成为稀疏集。同原始集一样,派生集成员的声明也可以放在数据部分。一个派生集的成员列表有两种方式生成:①显式罗列;②设置成员...
  • 结构体

    2019-04-29 14:45:37
    关键字struct用于引入结构说明,由包含在花括号内一些说明组成。其后跟名字是可选,结构标记用于命名结构。 一个结构说明定义一种类型,如 struct {....} x,y,z; 结构体说明之后没有定义变量表,则不...
  • 作业14-数据库

    2017-12-23 20:54:00
    定义:按照某种规则组织起来的数据的集合. 关系型数据库:使用表来存储数据;每行是一条记录;一行由若干列组成. 主键:可以唯一确定一条记录的关键字。(必须有) MySQL数据库简单操作: 启动:启动MySQL直接在控制台...
  • 关系数据库是以关系模型为基础数据库。关系模型由关系数据结构、关系操作和...码:也称为关键字或键,表中能唯一标识元组最小属性集合。其中若不止一个码,则一个为主码,其他为候选码。 域:属性取值范围。 ...
  • ORACLE数据字典是数据库重要组成部分之一,它随着数据库产生而产生, 随着数据库变化而变化, 体现为sys用户下一些表和视图。数据字典名称是大写英文字符。 数据字典里存有用户信息、用户权限信息、...
  • distinct 关键字必须放在查询字段最前面,作用于其后所有查询字段(也就是查询出其后字段组成集合不同就ok);单引号 sql中用单引号区分数字和字符,双引号不行;order by 其后除了跟列名进行排序外,还可以跟...
  • //各个不同的元素的集合 int [] y12=new int[v11.Count]; //记录各个元素数量的数组 int xmax=0; //最大的一个元素的数量 for (i=0;i;i++) { j0=(object)v11[i]; if (y11.Contains(j0)) { y12[y11.IndexOf(j0)]++; ...
  • VBSCRIPT中文手册

    热门讨论 2010-11-12 10:13:06
    你可以找到在按字母排序的关键字列表中 VBScript 语言所有部分。如果你只想调阅某一部分,例如“对象”,那么语言每一部分都有它自己更严密章节。 如何查找呢?单击左边某个标题,即显示该部分中包含...
  • vb Script参考文档

    2009-07-28 22:13:02
    你可以找到在按字母排序的关键字列表中 VBScript 语言所有部分。如果你只想调阅某一部分,例如“对象”,那么语言每一部分都有它自己更严密章节。 如何查找呢?单击左边某个标题,即显示该部分中包含...

空空如也

空空如也

1 2 3 4
收藏数 67
精华内容 26
关键字:

列关键字组成的集合