??xml version="1.0" encoding="utf-8" standalone="yes"?>
181题又是一个简单题目,l定一?/span>Employee表,里面存储了雇员的工资信息Q包括名字、工资、经?/span>IDQ题目要求写一?/span>sql查找出所有那些自w工资比l理q高的雇员的名字?/span>
+----+-------+--------+-----------+
| Id | Name | Salary | ManagerId |
+----+-------+--------+-----------+
| 1 | Joe | 70000 | 3 |
| 2 | Henry | 80000 | 4 |
| 3 | Sam | 60000 | NULL |
| 4 | Max | 90000 | NULL |
+----+-------+--------+-----------+
q个题目很简单,现有表不能做是因ؓ现有的一行记录里没有包含l理的工资信息,但是有经理的IDQ那么我们做一下关联,把工资信息拿刎ͼ再过滤就好了Q于是思\sql如下Q?/span>
其中s是自q工资Q?/span>m是经理的工资~~一目了?/span>
182题目地址Q?/span>https://oj.leetcode.com/problems/duplicate-emails/
182也是EasyU别题目Q题目描q就是写一?/span>sqlQ把Person表中有重?/span>Email的记录拉出来?/span>
+----+---------+
| Id | Email |
+----+---------+
| 1 | a@b.com |
| 2 | c@d.com |
| 3 | a@b.com |
+----+---------+
很容易想到的思\Q按?/span>email做聚合,?/span>count>1的取出来Q对?/span>sql如下Q?/span>
183题目地址Q?/span>https://oj.leetcode.com/problems/customers-who-never-order/
183题,一个网站包含两张表Q一?/span>Customers表存攑֮h据,一?/span>Orders表存放生订单的客户IDQ题目要求写sql查出没有在网站生过订单的客戗说白了是查询?/span>Customers里而不?/span>Orders里的数据Q?/span>sql如下Q?/span>
3个简单题目,夯实sql基础~~
q个题目是要求写一?/span>sqlQ查询出表中q箋出现三次的记录。表l构非常单如下:
+----+-----+
| Id | Num |
+----+-----+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 1 |
| 6 | 2 |
| 7 | 2 |
+----+-----+
q个Logs表里Q只?/span>Id?/span>Num字段Q而题目就是要扑ևq箋出现3ơ的NumQ对于这个表Q答案就?/span>1了?/span>
思\很直观暴力的一个想法就?/span>Logs表自己关?/span>3ơ,兌条g依次?/span>Id+1Q这样就可以把连l记录关联出来了
我的代码如下Q?/p>
q个题目虽然可以q样解掉Q但是很自然的会联想Q如?/span>3变成n呢,题目变ؓ求连l出?/span>nơ的记录Q那该如何解Q显然暴力解法是不可行的。鉴于能力有限,我从discuss区找C一个很赞的解法Q通过定义变量Q很巧妙的解了这个扩展的问题Q原作?/span>kent-huang
代码如下Q?/p>
单分析一下,作者通过定义两个变量record?/span>count来控制记录和对应?/span>rank|首先通过一?/span>select @count:=0,@record:=(SELECT num from Logs limit 0,1)语句来初始化q两个变?/span>count=0Q?/span>record=表里W一条记录的num。接下来通过普通查询,?/span>Logs表里每一条记录查出来Q和recordҎQ如果相同,?/span>count自增1Q如果不同,那么新的record被赋|同时count|?/span>1Q很漂亮的自定义变量?/span>sql实现了我们直觉上需要用逻辑代码来完成的功能。而且q个代码的一大优势是不需要用到Id字段~~非常?/span>
q有好的思\Q请一定分享给?/span>~~:)
q个问题很有,写一个类?/span>oracle里的H口函数rank()Q具体描qC下,有一张数据表ScoresQ里面有两个字段Id?/span>ScoreQ具体结构如下:
+----+-------+
| Id | Score |
+----+-------+
| 1 | 3.50 |
| 2 | 3.65 |
| 3 | 4.00 |
| 4 | 3.85 |
| 5 | 4.00 |
| 6 | 3.65 |
+----+-------+
d是要写一?/span>sql来给Score字段打一?/span>rank标识Q条件是按照Score从大到小排序Q相{情冉|rank相同Q且rank之间没有“z?#8221;Q即rank字段是连l倹{显然这个Q务比rankH口函数Ҏ一些,但是也是一个棘手的问题?/span>
题目具体l出了输出示例:
+-------+------+
| Score | Rank |
+-------+------+
| 4.00 | 1 |
| 4.00 | 1 |
| 3.85 | 2 |
| 3.65 | 3 |
| 3.65 | 3 |
| 3.50 | 4 |
+-------+------+
q_说实?/span>rank函数或?/span>row_number函数用多了,很少考虑实现Q面对这个问题,着头皮用笛卡尔U的join解决了,若是?/span>hive中,strict模式可能拒绝W卡积?/span>joinQ这时还是求助于H口函数rank?/span>~~
实现代码如下Q?/p>
q个题目其实?/span>176的扩展,刚才不是要找W二大的salary吗,那好Q现在直接扩展到LQ第N大,而且q次是要写一?/span>FunctionQ?/span>N作ؓ参数。表q是之前?/span>Employee表?/span>
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
我不知道Z么这个题目的通过率那么低Q但是事实是使用176题那文章的“错误”做法卛_解掉q个题目。注?/span>limit是从0开始,所以变量要默认自减1?/span>
大写的部分是题目已经l的框架Q我们只需要在Return语句里填写内容即可,?/span>declare了一个变量,不知道是否是一?/span>hack手段Q但?/span>it works.
当然本着在大数据q_下sql的经验,如果换做是在hive下写q个Q思\是什么呢Q?/p>
1Q我直接写一?/span>UDAF解决?/span>
2Q不具备UDAF能力的话Q可以在一?/span>key下做sort by后,把他?/span>group_concat或?/span>wm_concathQ然?/span>getW?/span>n?/span>item卛_Q当然这会利用到hive的默认的几个UDAF?/span>UDF?/span>
思\肯定有很多,Ƣ迎大家一hshare~
q个问题很有,是要求我们写?/span>sql来查?/span>Employee表里W二高的工资Q如果没有第二高的,那么q回null?/span>
+----+--------+
| Id | Salary |
+----+--------+
| 1 | 100 |
| 2 | 200 |
| 3 | 300 |
+----+--------+
看到q个问题Q可能很多h会想Q这很简单啊Q写?/span>order by descQ然后找到第二个卛_?/span>
试试提交呗?Wrong answerQؓ什么?看条件约束啊Q没有第二要q回nullQ我看到null的第一直觉是通过join搞到null|于是有了下面?/span>ac sqlQ?/span>
思\单说是通过全表左外联最?/span>salaryQ从兌不到?/span>salary里再找最大不是W二大吗Q?/span>
最后的l果?/span>894msQ当然我坚信有很多更快更高效的结果?/span>
W一题的描述Q题目地址Q?span style="font-family: verdana, 'courier new';">https://oj.leetcode.com/problems/combine-two-tables/
一张表叫做PersonQ主键是PersonId
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| PersonId | int |
| FirstName | varchar |
| LastName | varchar |
+-------------+---------+
另一张表叫做AddressQ主键是AddressId
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| AddressId | int |
| PersonId | int |
| City | varchar |
| State | varchar |
+-------------+---------+
题目要求写一?/span>sql完成查询dQ把Person表中每个人的FirstNameQ?/span>LastNameQ?/span>City?/span>State都查询出来?/span>
q明显是个非常简单的sqlQ只要拿Person表做左表q行left outer join卛_Q当然做双q行right join也行Q?/span>
最后,啰嗦几句Q在我们现在的Y件开发过E中Q数据处理应该是一个工E师必备的技能,w在大公司,可能sql的编写有很多的限Ӟ有的甚至不需要工E师来编写,直接交给DBAp了。在q样的环境下Q开发工E师往往丢掉了数据库的基本功。而在大数据的潮下,?/span>hive\pig\ODPS下编?/span> sql 也成了数据开发工E师的基本技能,数据开发不能仅仅停留在?/span>sql实现功能Q最重要的是理解Hadoop生态下Q各U?/span>sql语句的原理。就像开发一P要写出最高效?/span>sql来处理数据。我怿leetcode对于sql的挑战会是一个不错的q_Q大家加?/span>~~
原文地址Q?a >http://imei.org/2013/05/imei-number-decode/ 原文标题Q?strong>What Is IMEI Number and How To Decode It
译文Q?
“
你可能听说过IMEIQ也知道它是Ud讑֤的标识IDQ但是你知道它的具体功用吗?IMEI自手机出产后׃随其一生,I竟什么是IMEIQ如何理解它的数字含义?
手机是全世界范围内偷H事件的“主角”Q不要低估IMEI的重要性,把IMEI备䆾一下是一个明智的军_。本文会解释Z么我们的手机需要IMEIQ同时会列出如何扑ֈq记录IMEI的技术方法?
IMEI的全U是International Mobile Equipment IdentityQ每台设备都必备的一个唯一标识Q用来区分设备与讑֤。当你购C台新的手备时Q你会在收据上看到IMEIQ当你需要修理手机时Q手机服务商可能会要求你提供IMEI。标准的IMEI是一?4位数字,同时也有IMEI/SVq样?6位数字Ş式(仅新讑֤有)QSV是由软g设计的。当然苹果的iPhone GSM?15位数字,而CDMA?4位数字。不如何,IMEI的设计动Z仅仅是一个ID标识Q它也可以用来阻止网l访问,q可以用IMEI来进行运营商解锁?
如果你的手机qQ你可以情况上报到你的手机服务商,他们会阻止这台手行一切的|络讉KQ同时警察也可以通过IMEI来识别丢q讑֤?
多数手机在你输入拨号*#06#后就能看到IMEI了,当然也有其他的一些方法:
你可以?a >http://imei.org/check-iphone-carrier/ 服务通过输入IMEI来获得手机的q营商信?
2004q以来,l一的IMEI格式为:AA-BBBBBB-CCCCCC-DQ这是一?5位数字号Q其中:
举例来说Q现在iPhone 5的TAC?1-332700Q而三星的Galaxy S2?5-853704Q而C部分的SNR是由手机刉商自定义的生序列P最后一位校验位是通过法来生成的?
IMEI是手机相关的Q与sim卡无养I当你的手偷后Q无论手机重|还是更换sim卡,IMEI都是不变的,q时你是可以通过联系你的手机服务商来锁住手机的服务的。如果这行不通,可以联系你所在地区的q营商来锁定IMEI对于q营商网l的讉K?
有时候IMEI是变化的Q尽这不合法。有些窃贼有能力合法的新的IMEI安装C的手机里从而重新启用这个手机。另外鉴于犯|动机,q有Z利用IMEI来监听设备?
lgQIMEI是手机的重要的唯一性IDQ你需要去备䆾q记住它?
”
译l束?
最后附加一些说明?
关于TACQhttp://en.wikipedia.org/wiki/Type_Allocation_Code
关于最后一位校验位的算法和python codeQ?
?4位IMEIZQ校验位假设是C
1: if len(arg0)==15:
2: check_bit = int(arg0[-1])
3: i = len(arg0)-2
4: l,r = [],[]
5: while i>=0:
6: m = int(arg0[i])*2
7: if m<10:
8: l.append(m)
9: else:
10: l.append(m%10)
11: l.append(m/10)
12:
13: r.append(int(arg0[i-1]))
14: i-=2
15: l.reverse()
16: r.reverse()
17: if sum((sum(l),sum(r)))*9%10==check_bit:
18: return True
19: return False
hbase.rpc.server.engineQhbase 做rpc server的调度管理类Q实现自org.apache.hadoop.ipc.RpcServerEngineQ默认是org.apache.hadoop.hbase.ipc.ProtobufRpcServerEngineQ?/p>
hbase.rpc.timeoutQHbase client发vq程调用时的时旉Q用ping来确认连接,但是最l会抛出一个TimeoutExceptionQ默认值是60000Q?/p>
hbase.rpc.shortoperation.timeoutQ另一个版本的hbase.rpc.timeoutQ控制短操作的超时时限,比如region server 汇报master的操作的时旉可以讄,q样有利于master的failoverQ默认是10000Q?/p>
hbase.ipc.client.tcpnodelayQ默认是trueQ具体就是在tcp socketq接时设|?no delayQ?/p>
hbase.master.keytab.fileQkerberos keytab 文g的全路径名,用来为HMaster做logQ无默认|
hbase.master.kerberos.principalQ运行HMasterq程旉要kerberos的principal nameQ这个配|就是这个name的|形如Q?a href="mailto:hbase/_HOST@EXAMPLE.COM">hbase/_HOST@EXAMPLE.COMQ?/p>
hbase.regionserver.keytab.fileQkerberos keytab 文g的全路径名,用来为HRegionServer做logQ无默认|
hbase.regionserver.kerberos.principalQ运行HRegionServerq程旉要kerberos的principal nameQ这个配|就是这个name的|形如Q?a href="mailto:hbase/_HOST@EXAMPLE.COM">hbase/_HOST@EXAMPLE.COMQ?/p>
hadoop.policy.fileQRPC服务器做权限认证旉要的安全{略配置文gQ在Hbase security开启后使用Q默认是habse-policy.xmlQ?/p>
hbase.superuserQHbase security 开启后的超U用户配|,一pd由逗号隔开的user或者groupQ?/p>
hbase.auth.key.update.intervalQHbase security开启后服务端更新认证key的间隔时_默认?6400000毫秒Q?/p>
hbase.auth.token.max.lifetimeQHbase security开启后Q认证token下发后的生存周期Q默认是604800000毫秒Q?/p>
hbase.ipc.client.fallback-to-simple-auth-allowedQclient使用安全q接去链接一台非安全服务器时Q服务器提示client切换到SASL SIMPLE认证模式Q非安全Q,如果讄为trueQ则client同意切换到非安全q接Q如果falseQ则退接;
hbase.coprocessor.region.classesQ逗号分隔的Coprocessores列表Q会被加载到默认所有表上。在自己实现了一个Coprocessor后,其d到Hbase的classpathq加入全限定名。也可以延迟加蝲Q由HTableDescriptor指定Q?/p>
hbase.rest.portQHbase REST服务器的端口Q默认是8080Q?/p>
hbase.rest.readonlyQ定义REST服务器启动的模式Q有两种方式QfalseQ所有httpҎ都将被通过-GET/PUT/POST/DELETEQtrueQ只有getҎok。默认值是falseQ?/p>
hbase.rest.threads.maxQREST服务器线E池的最大线E数Q池满的话新h会自动排队,限制q个配置可以控制服务器的内存量,预防OOMQ默认是100Q?/p>
hbase.rest.threads.minQ同上类|最线E数Qؓ了确保服务器的服务状态,默认?Q?/p>
hbase.rest.support.proxyuserQREST服务器支持proxy-user 模式Q默认是falseQ?/p>
hbase.defaults.for.version.skipQ是否蟩qhbase.defaults.for.version的检查,默认是falseQ?/p>
hbase.coprocessor.master.classesQ由HMasterq程加蝲的coprocessorsQ逗号分隔Q全部实现org.apache.hadoop.hbase.coprocessor.MasterObserverQ同coprocessorcMQ加入classpath及全限定名;
hbase.coprocessor.abortonerrorQ如果coprocessor加蝲p|或者初始化p|或者抛出Throwable对象Q则L退出。设|ؓfalse会让pȝl箋q行Q但是coprocessor的状态会不一_所以一般debug时才会设|ؓfalseQ默认是trueQ?/p>
hbase.online.schema.update.enableQ设|true来允许在Uschema变更Q默认是trueQ?/p>
hbase.table.lock.enableQ设|ؓtrue来允许在schema变更时zk锁表Q锁表可以组lƈ发的schema变更D的表状态不一_默认是trueQ?/p>
hbase.thrift.minWorkerThreadsQ线E池的core sizeQ在辑ֈq里配置的量U后Q新U程才会再新的连接创立时创徏Q默认是16Q?/p>
hbase.thrift.maxWorkerThreadsQ顾名思义Q最大线E数Q达到这个数字后Q服务器开始dropq接Q默认是1000Q?/p>
hbase.thrift.maxQueuedRequestsQThriftq接队列的最大数Q如果线E池满,会先在这个队列中~存hQ缓存上限就是该配置Q默认是1000Q?/p>
hbase.thrift.htablepool.size.maxQThrift服务器上table pool的最大上限,默认?000Q?/p>
hbase.offheapcache.percentageQJVM参数-XX:MaxDirectMemorySize的百分比|默认?Q即不开启堆外分配;
hbase.data.umask.enableQ开启后Q文件在regionserver写入时会 有权限相兌定,默认是false不开启;
hbase.data.umaskQ开启上面一w|后Q文件的权限umaskQ默认是000Q?/p>
hbase.metrics.showTableNameQ是否ؓ每个指标昄表名前缀Q默认是trueQ?/p>
hbase.metrics.exposeOperationTimesQ是否进行关于操作在使用旉l度的指标报告,比如GET PUT DELETE INCREMENT{,默认是trueQ?/p>
hbase.snapshot.enabledQ是否允许snapshot被用、存储和克隆Q默认是trueQ?/p>
hbase.snapshot.restore.take.failsafe.snapshotQ在restoreq程中,如果p|则启用snapshot替换Q成功则删除掉snapshotQ默认开启trueQ?/p>
hbase.snapshot.restore.failsafe.nameQ刚才所说过E中snapshot的名字,默认是hbase-failsafe-{snapshot.name}-{restore.timestamp}Q?/p>
hbase.server.compactchecker.interval.multiplierQ检查是否需要compact的时间间隔,一般情冉|在比如memstore flush后或者其他事件触发compact的,但是有时也需要不同的compact{略Q所以需要周期性的查具体间?hbase.server.compactchecker.interval.multiplier * hbase.server.thread.wakefrequencyQ默?000Q?/p>
hbase.lease.recovery.timeoutQ在dfs U约时旉Q超时则攑ּQ默认是900000Q?/p>
hbase.lease.recovery.dfs.timeoutQdfs恢复U约调用的超时时限,默认?4000Q?/p>
hbase.client.write.bufferQhtable客户端写~冲区大,默认?097152BYTEQ这个缓冲区是Z写数据的临时存放Q设|大了,费客户端和服务端的存储Q设|小了,如果写的数据多,太多的RPC又带来网l开销Q官方给的一个服务端存储耗费评估计算是:hbase.client.write.buffer*hbase.regionserver.handler.countQ服务端的rs的处理handler个数也很关键Q?/p>
hbase.client.pauseQpause旉Q在hbase发生get或其他操作fail掉的时候进行pause的时间长度,默认?00Q?/p>
hbase.client.retries.numberQ发生操作fail时的重试ơ数Q结合上一个指标一h控制ȝ重试旉Q默认是35Q?/p>
hbase.client.max.total.tasksQ一个HTable实例可以提交l集的最大ƈ发Q务数Q默认是100Q?/p>
hbase.client.max.perserver.tasksQ一个HTable实例l一台regionserver提交的最大ƈ发Q务数Q默认是5Q?/p>
hbase.client.max.perregion.tasksQ客Lq接一台region的最大连接数Q换句话_当你有这么多个连接在regionӞ新的操作不被发送直到有操作完成Q默认是1Q?/p>
hbase.client.scanner.cachingQ做scanner的next操作Ӟ如果再本地client没找刎ͼ~存的数据行敎ͼq个值的讄也需要权衡,~存的多则快Q但吃内存,~存的少则需要多的拉数据Q?需要注意的事项是如果两ơ调用的旉差大于scanner的timeoutQ则不要讄该|默认?00Q?/p>
hbase.client.keyvalue.maxsizeQ一个KeyValue实例的最大大,q是存储文g中一个entry的容量上限,合理的设|这个值可以控制regionserver的splitQsplit不会拆keyvalueQ所以把keyvalue的大设|ؓregionserver大小的一个比例分敎ͼ可除Q是个不错的选择Q默认是10485760Q?/p>
hbase.client.scanner.timeout.periodQ结合刚才的caching做的一个,scanner的超时时_默认?0000毫秒Q?/p>
hbase.client.localityCheck.threadPoolSizeQ做localityCheck的线E池大小Q默认是2Q?/p>
hbase.bulkload.retries.numberQ做bulk load的最大重试次敎ͼ默认?Q即代表不断重试Q?/p>
hbase.balancer.periodQMasterq行balancer的周期,默认?00000毫秒Q?/p>
hbase.regions.slopQ如果有regionserver的region数目过average+(average*slop)Q则rebalanceQ默认是0.2Q?/p>
hbase.server.thread.wakefrequencyQ服务线E的sleep旉Q默?0000毫秒Q比如log rollerQ?/p>
hbase.server.versionfile.writeattemptsQ退出前?version file的重试次敎ͼ默认3Q每ơ尝试的间隔׃一个参数控Ӟ
hbase.hregion.memstore.flush.sizeQMemstore写磁盘的flush阈|过q个大小flushQ默认是134217728Q?/p>
hbase.hregion.preclose.flush.sizeQ如果一个region的memstore的大等于或过q个参数的量Q在关闭regionӞ攄关闭flagQ,要提前flushQ然后region关闭下线Q默认大是5242880Q?/p>
hbase.hregion.memstore.block.multiplierQ如果memstore的大满hbase.hregion.block.memstore * hbase.hregion.flush.size个byteQ那么阻塞updateQ这个配|可以避免不必要的长旉split或者compactQ甚xOOMEQ默认是2Q?/p>
hbase.hregion.memstore.mslab.enabledQ开启MemStore-Local Allocation BufferQ这个配|可以避免在高写入的情况下的堆内存碎片,可以降低在大堆情况下的stop-the-world GC频率Q默认是trueQ?/p>
hbase.hregion.max.filesizeQHStoreFile的最大尺寸,换句话说Q当一个region里的列族的Q意一个HStoreFile过q个大小Q那么regionq行splitQ默认是10737418240Q?/p>
hbase.hregion.majorcompactionQ一个region的所有HStoreFileq行major compact的时间周期,默认?04800000 毫秒Q?天)Q?/p>
hbase.hregion.majorcompaction.jitterQmajor compaction的发生抖动范_q么理解比较ҎQ就是说上一个参C是一个严格周期,会有个抖动,q个参数是q个抖动的比例,默认?.5Q?/p>
hbase.hstore.compactionThresholdQ一个HStore存储HStoreFile的个数阈|过q个阈值则所有的HStoreFile会被写到一个新的HStoreQ需要^衡取舍,默认?Q?/p>
hbase.hstore.blockingStoreFilesQ一个HStore存储HStoreFiledupdate的阈|过q个阈|HStorep行compactionQ直到做完才允许updateQ默认是10Q?/p>
hbase.hstore.blockingWaitTimeQ一个更强力的配|,配合上一个参敎ͼ当HStoredupdateӞ过q个旉限制Q阻塞取消,qcompaction没有完成Qupdate也不会再被阻塞,默认?0000毫秒Q?/p>
hbase.hstore.compaction.maxQ每个minor compaction的HStoreFile个数上限Q默认是10Q?/p>
hbase.hstore.compaction.kv.maxQ在flushing或者compacting时允许的最大keyvalue个数Q如果有大的KeyValue或者OOME的话则配|一个小的|如果行数多且则配置大|默认?0Q?/p>
hbase.storescanner.parallel.seek.threadsQ如果ƈ行查扑ּ启的U程池大,默认?0Q?/p>
hfile.block.cache.sizeQ一个配|比例,允许最大堆的对应比例的内存作ؓHFile和HStoreFile的block cacheQ默认是0.4Q即40%Q设|ؓ0则disableq个比例Q不推荐q么做;
hfile.block.index.cacheonwriteQ在index写入的时候允许put无根Qnon-rootQ的多索引块到block cache里,默认是falseQ?/p>
hfile.index.block.max.sizeQ在多索引的树形结构里Q如果Q何一层的block index辑ֈq个配置大小Q则block写出Q同时替换上新的blockQ默认是131072Q?/p>
hfile.format.versionQ新文g的HFile 格式版本Q设|ؓ1来测试向后兼容,默认?Q?/p>
hfile.block.bloom.cacheonwriteQ对于组合布隆过滤器的内联block开启cache-on-writeQ默认是falseQ?/p>
io.storefile.bloom.block.sizeQ一个联合布隆过滤器的单一块(chunkQ的大小Q这个值是一个D|默认?31072Q?/p>
hbase.rs.cacheblocksonwriteQ当一个HFile block完成时是否写入block cacheQ默认是falseQ?/p>
hbase.tmp.dirQ本地文件系l的临时目录Q默认是${java.io.tmpdir}/hbase-${user.name}Q?/p>
hbase.rootdirQhbase持久化的目录Q被所有regionserver׃nQ默?{hbase.tmp.dir}/hbaseQ一般设|ؓhdfs://namenode.example.org:9000/hbasecMQ带全限定名Q?/p>
hbase.cluster.distributedQhbase集群模式q作与否的标志,默认是falseQ开启需要设|ؓtrueQfalse时启动hbase会在一个jvm中运行hbase和zkQ?/p>
hbase.zookeeper.quorumQ重要的也是必须讄的,启动zk的服务器列表Q逗号分隔Qcluster模式下必设|,默认是localhostQhbase客户端也需要设|这个值去讉KzkQ?/p>
hbase.local.dirQ本地文件系l被用在本地存储的目录,默认${hbase.tmp.dir}/local/Q?/p>
hbase.master.portQhbase masterl定的端口,默认?0000Q?/p>
hbase.master.info.portQhbase master web 界面的端口,默认?0010Q设|ؓ-1可以用uiQ?/p>
hbase.master.info.bindAddressQmaster web界面的绑定地址Q默认是0.0.0.0Q?/p>
hbase.master.logcleaner.pluginsQ清理日志的插g列表Q逗号分隔Q被LogService调用的LogCleanerDelegateQ可以自定义Q顺序执行,清理WAL和HLogQ默?code>org.apache.hadoop.hbase.master.cleaner.TimeToLiveLogCleaner
hbase.master.logcleaner.ttlQHLog?oldlogdir目录中生存的最长时_q期则被MasterLE回Ӟ默认?00000Q?/p>
hbase.master.hfilecleaner.pluginsQHFile的清理插件列表,逗号分隔Q被HFileService调用Q可以自定义Q默认org.apache.hadoop.hbase.master.cleaner.TimeToLiveHFileCleaner
hbase.master.catalog.timeoutQCatalog Janitor从master到META的超时时_我们知道q个Janitor是定时的去META扫描表目录,来决定回收无用的regionsQ默认是600000Q?/p>
fail.fast.expired.active.masterQ如果masterq期Q那么不需要从zk恢复Q直接终止,默认是falseQ?/p>
hbase.master.dns.interfaceQmaster的dns接口Q向该接口提供ipQ默认是defaultQ?/p>
hbase.master.dns.nameserverQmaster使用的dnsL名或者ipQ默认是defaultQ?/p>
hbase.regionserver.portQregionserverl定的端口,默认?0020Q?/p>
hbase.regionserver.info.portQregionserver的web界面端口Q?1取消界面Q默认是60030Q?/p>
hbase.regionserver.info.bindAddressQregionserver的webl定Q默认是0.0.0.0Q?/p>
hbase.regionserver.info.port.autoQmaster或者regionserver是否自动搜烦l定的端口,默认是falseQ?/p>
hbase.regionserver.handler.countQregionserver上rpc listener的个敎ͼhttp://kenwublog.com/hbase-performance-tuning把这个配|称为ioU程敎ͼ其实雷同Q就是说在regionserver上一个处理rpc的handlerQ默认是30Q?/p>
hbase.regionserver.msgintervalQregionserver向master发消息的间隔Q默?000毫秒Q?/p>
hbase.regionserver.optionallogflushintervalQ如果没有够的entry触发同步Q那么过了这个间隔后HLog被同步到HDFSQ默认是1000毫秒Q?/p>
hbase.regionserver.regionSplitLimitQregionsplit的最大限额,默认是MAX_INT=2147483647Q设|这个限制后Q在到达限制时region split׃会再q行Q?/p>
hbase.regionserver.logroll.periodQ不有多少版本Q直接roll掉commit log的周期,也就是说一个固定的旉周期Q到期就rollQ默认是3600000毫秒Q?/p>
hbase.regionserver.logroll.errors.toleratedQ可接受的WAL关闭错误个数Q到辑触发服务器l止Q设|ؓ0那么在WAL writer做log rollingp|时就停止region serverQ默认是2Q?/p>
hbase.regionserver.hlog.reader.implQHLog 文greader的实现类Q默认是org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReaderQ?/p>
hbase.regionserver.hlog.writer.implQHLog 文gwriter的实现类Q默认是org.apache.hadoop.hbase.regionserver.wal.ProtobufLogWriterQ?/p>
hbase.regionserver.global.memstore.upperLimitQmemstore在regionserver内存中的上限Q届时新的update被阻塞ƈ且flush被强制写Q默认是0.4是堆内存的40%Q阻塞状态持l到regionserver的所有memstore的容量到达hbase.regionserver.global.memstore.lowerLimitQ?/p>
hbase.regionserver.global.memstore.lowerLimitQmemstore在regionserver内存中的最大上限,到达时flushp强制写,默认?.38{h?8%的内存容量;
hbase.regionserver.optionalcacheflushintervalQ一个edit版本在内存中的cache旉Q默?600000毫秒Q设|ؓ0的话则禁止自动flushQ?/p>
hbase.regionserver.catalog.timeoutQregionserver的Catalog Janitor讉KMETA的超时时_默认?00000Q?/p>
hbase.regionserver.dns.interfaceQ同mastercM~~不讲
hbase.regionserver.dns.nameserverQ同mastercM
zookeeper.session.timeoutQ这是个值得说道一下的配置Q首先ZK客户端要用,Hbase使用zk的客L联系MQ同时也被用来启动一个zk serverQ作为zk的maxSessionTimeoutQȝ来说是regionserver与zk的关键参敎ͼ如果q接时Qmaster会重新的balanceQregionserver也会被从集群名单中清除,默认?0000Q一个问题是如果zk 由hbase自己l护Q那么该参数作ؓregionserverq接是一个|如果zk在另外的集群Q那么zk自己的maxSessionTimeout参数优先于Hbase的该参数Q届时可能会发生时旉不同的问题;
zookeeper.znode.parentQznode存放root region的地址Q默认是root-region-serverQ?/p>
zookeeper.znode.acl.parentQroot znode的aclQ默认aclQ?/p>
hbase.zookeeper.dns.interfaceQzk的dns接口Q默认defaultQ?/p>
hbase.zookeeper.dns.nameserverQzk的dns服务地址Q默认defaultQ?/p>
hbase.zookeeper.peerportQzk的peer之间的通讯端口Q默认是2888Q?/p>
hbase.zookeeper.leaderportQzk选leader的通讯端口Q默认是3888Q?/p>
hbase.zookeeper.useMultiQzk支持多重updateQ要求zk?.4版本以上Q默认是falseQ?/p>
hbase.config.read.zookeeper.configQ让hbaseconfig去读zk的configQ默认falseQ也不支持开启,q个功能很搞W~~个h观点Q?/p>
hbase.zookeeper.property.initLimitQzk的配|,同步的属性个数限Ӟ默认10个~~没用Q?/p>
hbase.zookeeper.property.syncLimitQzk的配|,同步时的每次h的条敎ͼ默认5个;
hbase.zookeeper.property.dataDirQzk的配|,snapshot存放的目录,默认?{hbase.tmp.dir}/zookeeperQ?/p>
hbase.zookeeper.property.clientPortQzk的配|,clientqzk的端口,默认2181Q?/p>
hbase.zookeeper.property.maxClientCnxnsQzk的配|,允许接入zk的最大ƈ发连接数的限Ӟ按ip分配Q默?00Q?/p>
fs.har.implQ访问Hadoop Archives的实现类Q低于hadoop 0.20版本的都不兼容,默认是org.apache.hadoop.hive.shims.HiveHarFileSystemQ?/p>
hive.archive.enabledQ是否允许归档操作,默认是falseQ?/p>
hive.archive.har.parentdir.settableQ在创徏HAR文g时必要有父目录Q需要手动设|,在新的hadoop版本会支持,默认是falseQ?/p>
hive.support.concurrencyQhive是否支持q发Q默认是falseQ支持读写锁的话Q必要起zookeeperQ?/p>
hive.lock.mapred.only.operationQ控制是否在查询时加锁,默认是falseQ?/p>
hive.lock.numretriesQ获取锁时尝试的重试ơ数Q默认是100Q?/p>
hive.lock.sleep.between.retriesQ在重试间隔的睡眠时_默认60U;
hive.zookeeper.quorumQzk地址列表Q默认是I;
hive.zookeeper.client.portQzk服务器的q接端口Q默认是2181Q?/p>
hive.zookeeper.session.timeoutQzk客户端的session时旉Q默认是600000Q?/p>
hive.zookeeper.namespaceQ在所有zk节点创徏后的父节点,默认是hive_zookeeper_namespaceQ?/p>
hive.zookeeper.clean.extra.nodesQ在sessionl束时清除所有额外nodeQ?/p>
hive.cluster.delegation.token.store.classQ代理token的存储实现类Q默认是org.apache.hadoop.hive.thrift.MemoryTokenStoreQ可以设|ؓorg.apache.hadoop.hive.thrift.ZooKeeperTokenStore来做负蝲均衡集群Q?/p>
hive.cluster.delegation.token.store.zookeeper.connectStringQzk的token存储q接Ԍ默认是localhost:2181Q?/p>
hive.cluster.delegation.token.store.zookeeper.znodeQtoken存储的节点跟路径Q默认是/hive/cluster/delegationQ?/p>
hive.cluster.delegation.token.store.zookeeper.aclQtoken存储的ACLQ默认是sasl:hive/host1@example.com:cdrwa,sasl:hive/host2@example.com:cdrwaQ?/p>
hive.use.input.primary.regionQ从一张input表创Ӟ创徏q个表到input表的主regionQ默认是trueQ?/p>
hive.default.region.nameQ默认region的名字,默认是defaultQ?/p>
hive.region.propertiesQregion的默认的文gpȝ和jobtrackerQ默认是I;
hive.cli.print.headerQ查询输出时是否打印名字和列Q默认是falseQ?/p>
hive.cli.print.current.dbQhive的提C里是否包含当前的dbQ默认是falseQ?/p>
hive.hbase.wal.enabledQ写入hbase时是否强制写wal日志Q默认是trueQ?/p>
hive.hwi.war.fileQhive在web接口是的war文g的\径,默认是lib/hive-hwi-xxxx(version).warQ?/p>
hive.hwi.listen.hostQhwi监听的host地址Q默认是0.0.0.0Q?/p>
hive.hwi.listen.portQhwi监听的端口,默认?999Q?/p>
hive.test.modeQhive是否q行在测试模式,默认是falseQ?/p>
hive.test.mode.prefixQ在试模式q行Ӟ表的前缀字符Ԍ默认是test_Q?/p>
hive.test.mode.samplefreqQ如果hive在测试模式运行,q且表未分桶Q抽样频率是多少Q默认是32Q?/p>
hive.test.mode.nosamplelistQ在试模式q行时不q行抽样的表列表Q默认是I;
基数估计的初衷就是ؓ了解军_大数据的前提下,如何以低成本的空间复杂度去计超大集合的势的问题Q换句话_通过基数估计Q单机做到计亿U别uvQ误差在4%以内。解x\主要是概率估计,具体原理和做法参?blog和论文原文?
Z实验的目的,我简单实C暴力做法bruteforce-bfQ布隆过滤器-bbfQloglog-llc和hyperloglog-hllc四个法Q比较一下基C计这个计去重指标的逻辑是否可行Qllc非常谱Q可能是我分桶数没有调整好,׃贴出l果了)?
预处理方法:1-N生成随机uidQ模拟Nơ(均匀分布Q,jvm启动-Xmx1024m?
实验l果Q?
附加说明一下,期望值如何计:其实q个实验的数学原型就是一个长度ؓk的均匀分布的(1-N)的随机数列,求不重复的元素个数的期望。我实验里k=nQ这是一U极端情况(实验设计Uؓ方便计算Q如果k较大会导致计超慢,uv5000w时根本无法计出来,增大k理论上会提高_ֺQ我实验q的一l数据是100w uv 500wpv?hllc的值是991234Q误?lt;1%Q,理论上k相当于pvQ在递推公式中k于无穷时期望等于n?
q个递推的计可以通过l合分析推导Q推导方法不详说了(当然我有可能推导错了~~数学功底 实在 不行了)Q通项公式见matlab代码?
syms e n;
e = n-(1/n)*((1-2*n+n*n)*((n-1)/n)^(n-2)+(1-n)*n+n*(n-1));
vpa(subs(e,'n',1000000),10)
另外Q我个h认ؓ分布式布隆过滤器的方案是非常好的Q因为空间和旉都比较均衡,且精度高,基数估计的方法本质上I间复杂度O(1)Q时间复杂度代码高效一点也可以非常快,但是~点是精度E微Ơ缺Q且不易分布式计(因ؓ它天生适合单进E,llc分桶均衡也是单进E做比较好,分布式完全是牛刀杀鸡)?
ref blog: http://blog.codinglabs.org/articles/cardinality-estimate-exper.html#ref4
法实现的java代码可见githubQ?https://github.com/changedi/card-estimate
hive.index.compact.file.ignore.hdfsQ在索引文g中存储的hdfs地址在q行时被忽略Q如果开启的话;如果数据被迁U,那么索引文g依然可用Q默认是falseQ?/p>
hive.optimize.index.filter.compact.minsizeQ压~烦引自动应用的最输入大,默认?368709120Q?/p>
hive.optimize.index.filter.compact.maxsizeQ同上,相反含义Q如果是负g表正无穷Q默认是-1Q?/p>
hive.index.compact.query.max.sizeQ一个用压~烦引做的查询能取到的最大数据量Q默认是10737418240 个byteQ负g表无I大Q?/p>
hive.index.compact.query.max.entriesQ用压~烦引查询时能读到的最大烦引项敎ͼ默认?0000000Q负g表无I大Q?/p>
hive.index.compact.binary.searchQ在索引表中是否开启二分搜索进行烦引项查询Q默认是trueQ?/p>
hive.exec.concatenate.check.indexQ如果设|ؓtrueQ那么在做ALTER TABLE tbl_name CONCATENATE on a table/partitionQ有索引Q?操作Ӟ抛出错误Q可以帮助用户避免index的删除和重徏Q?/p>
hive.stats.dbclassQ存储hive临时l计信息的数据库Q默认是jdbc:derbyQ?/p>
hive.stats.autogatherQ在insert overwrite命o时自动收集统计信息,默认开启trueQ?/p>
hive.stats.jdbcdriverQ数据库临时存储hivel计信息的jdbc驱动Q?/p>
hive.stats.dbconnectionstringQ时统计信息数据库q接Ԍ默认jdbc:derby:databaseName=TempStatsStore;create=trueQ?/p>
hive.stats.defaults.publisherQ如果dbclass不是jdbc或者hbaseQ那么用这个作为默认发布,必须实现StatsPublisher接口Q默认是I;
hive.stats.defaults.aggregatorQ如果dbclass不是jdbc或者hbaseQ那么用该cd聚集Q要求实现StatsAggregator接口Q默认是I;
hive.stats.jdbc.timeoutQjdbcq接时配置Q默?0U;
hive.stats.retries.maxQ当l计发布合聚集在更新数据库时出现异常时最大的重试ơ数Q默认是0Q不重试Q?/p>
hive.stats.retries.waitQ重试次C间的{待H口Q默认是3000毫秒Q?/p>
hive.client.stats.publishersQ做count的job的统计发布类列表Q由逗号隔开Q默认是I;必须实现org.apache.hadoop.hive.ql.stats.ClientStatsPublisher接口Q?/p>
hive.client.stats.countersQ没什么用~~~
hive.security.authorization.enabledQhive客户端是否认证,默认是falseQ?/p>
hive.security.authorization.managerQhive客户端认证的理c,默认是org.apache.hadoop.hive.ql.security.authorization.DefaultHiveAuthorizationProviderQ用户定义的要实现org.apache.hadoop.hive.ql.security.authorization.HiveAuthorizationProviderQ?/p>
hive.security.authenticator.managerQhive客户端授权的理c,默认是org.apache.hadoop.hive.ql.security.HadoopDefaultAuthenticatorQ用户定义的需要实现org.apache.hadoop.hive.ql.security.HiveAuthenticatorProviderQ?/p>
hive.security.authorization.createtable.user.grantsQ当表创建时自动授权l用P默认是空Q?/p>
hive.security.authorization.createtable.group.grantsQ同上,自动授权l组Q默认是I;
hive.security.authorization.createtable.role.grantsQ同上,自动授权l角Ԍ默认是空Q?/p>
hive.security.authorization.createtable.owner.grantsQ同上,自动授权lownerQ默认是I;
hive.security.metastore.authorization.managerQmetastore的认证管理类Q默认是org.apache.hadoop.hive.ql.security.authorization.DefaultHiveMetastoreAuthorizationProviderQ用户定义的必须实现org.apache.hadoop.hive.ql.security.authorization.HiveMetastoreAuthorizationProvider接口Q接口参数要包含org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider接口Q用HDFS的权限控制认证而不是hive的基于grant的方式;
hive.security.metastore.authenticator.managerQmetastore端的授权理c,默认是org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticatorQ自定义的必d现org.apache.hadoop.hive.ql.security.HiveAuthenticatorProvider接口Q?/p>
hive.metastore.pre.event.listenersQ在metastore做数据库M操作前执行的事g监听cd表;
hive.metastore.localQ控制hive是否q接一个远Emetastore服务器还是开启一个本地客LjvmQ默认是trueQHive0.10已经取消了该配置;
javax.jdo.option.ConnectionURLQJDBCq接字符Ԍ默认jdbc:derby:;databaseName=metastore_db;create=trueQ?/p>
javax.jdo.option.ConnectionDriverNameQJDBC的driverQ默?tt>org.apache.derby.jdbc.EmbeddedDriverQ?/p>
javax.jdo.PersisteneManagerFactoryClassQ实现JDO PersistenceManagerFactory的类名,默认org.datanucleus.jdo.JDOPersistenceManagerFactoryQ?/p>
javax.jdo.option.DetachAllOnCommitQ事务提交后detach所有提交的对象Q默认是trueQ?/p>
javax.jdo.option.NonTransactionalReadQ是否允讔R事务的读Q默认是trueQ?/p>
javax.jdo.option.ConnectionUserNameQusernameQ默认APPQ?/p>
javax.jdo.option.ConnectionPasswordQpasswordQ默认mineQ?/p>
javax.jdo.option.MultithreadedQ是否支持ƈ发访问metastoreQ默认是trueQ?/p>
datanucleus.connectionPoolingTypeQ用连接池来访问JDBC metastoreQ默认是DBCPQ?/p>
datanucleus.validateTablesQ检查是否存在表的schemaQ默认是falseQ?/p>
datanucleus.validateColumnsQ检查是否存在列的schemaQ默认falseQ?/p>
datanucleus.validateConstraintsQ检查是否存在constraint的schemaQ默认falseQ?/p>
datanucleus.stroeManagerTypeQ元数据存储cdQ默认rdbmsQ?/p>
datanucleus.autoCreateSchemaQ在不存在时是否自动创徏必要的schemaQ默认是trueQ?/p>
datanucleus.aotuStartMechanismModeQ如果元数据表不正确Q抛出异常,默认是checkedQ?/p>
datanucleus.transactionIsolationQ默认的事务隔离U别Q默认是read-committedQ?/p>
datanucleus.cache.level2Q用二U缓存,默认是falseQ?/p>
datanucleus.cache.level2.typeQ二U缓存的cdQ有两种QSOFT:软引用,WEAK:弱引用,默认是SOFTQ?/p>
datanucleus.identifierFactoryQid工厂生表和列名的名字,默认是datanucleusQ?/p>
datanucleus.plugin.pluginRegistryBundleCheckQ当plugin被发现ƈ且重复时的行为,默认是LOGQ?/p>
hive.metastroe.warehouse.dirQ数据仓库的位置Q默认是/user/hive/warehouseQ?/p>
hive.metastore.execute.setugiQ非安全模式Q设|ؓtrue会ometastore以客L的用户和l权限执行DFS操作Q默认是falseQ这个属性需要服务端和客L同时讄Q?/p>
hive.metastore.event.listenersQmetastore的事件监听器列表Q逗号隔开Q默认是I;
hive.metastore.partition.inherit.table.propertiesQ当新徏分区时自动承的key列表Q默认是I;
hive.metastore.end.function.listenersQmetastore函数执行l束时的监听器列表,默认是空Q?/p>
hive.metastore.event.expiry.durationQ事件表中事件的q期旉Q默认是0Q?/p>
hive.metastore.event.clean.freqQmetastore中清理过期事件的定时器的q行周期Q默认是0Q?/p>
hive.metastore.connect.retriesQ创建metastoreq接时的重试ơ数Q默认是5Q?/p>
hive.metastore.client.connect.retry.delayQ客L在连l的重试q接{待的时_默认1Q?/p>
hive.metastore.client.socket.timeoutQ客Lsocket时旉Q默?0U;
hive.metastore.rawstore.implQ原始metastore的存储实现类Q默认是org.apache.hadoop.hive.metastore.ObjectStoreQ?/p>
hive.metastore.batch.retrieve.maxQ在一个batch获取中,能从metastore里取出的最大记录数Q默认是300Q?/p>
hive.metastore.ds.connection.url.hookQ查找JDOq接url时hook的名字,默认是javax.jdo.option.ConnectionURLQ?/p>
hive.metastore.ds.retry.attemptsQ当出现q接错误旉试连接的ơ数Q默认是1ơ;
hive.metastore.ds.retry.intervalQmetastore重试q接的间隔时_默认1000毫秒Q?/p>
hive.metastore.server.min.threadsQ在thrift服务池中最的工作U程敎ͼ默认?00Q?/p>
hive.metastore.server.max.threadsQ最大线E数Q默认是100000Q?/p>
hive.metastore.server.tcp.keepaliveQmetastore的server是否开启长q接Q长q可以预防半q接的积累,默认是trueQ?/p>
hive.metastore.sasl.enabledQmetastore thrift接口的安全策略,开启则用SASL加密接口Q客L必须要用Kerberos机制鉴权Q默认是不开启falseQ?/p>
hive.metastore.kerberos.keytab.fileQ在开启sasl后kerberos的keytab文g存放路径Q默认是I;
hive.metastore.kerberos.principalQkerberos的principalQ_HOST部分会动态替换,默认?a href="mailto:hive-metastore/_HOST@EXAMPLE.COM">hive-metastore/_HOST@EXAMPLE.COMQ?/p>
hive.metastore.cache.pinobjtypesQ在cache中支持的metastore的对象类型,由逗号分隔Q默认是Table,StorageDescriptor,SerDeInfo,Partition,Database,Type,FieldSchema,OrderQ?/p>
hive.metastore.authorization.storage.checksQ在做类似drop partition操作Ӟmetastore是否要认证权限,默认是falseQ?/p>
hive.metastore.schema.verificationQ强制metastore的schema一致性,开启的话会校验在metastore中存储的信息的版本和hive的jar包中的版本一致性,q且关闭自动schemaq移Q用户必L动的升hiveq且q移schemaQ关闭的话只会在版本不一致时l出警告Q默认是false不开启;
hive.exec.show.job.failure.debug.infoQ在作业p|时是否提供一个Q务debug信息Q默认trueQ?/p>
hive.auto.progress.timeoutQ运行自动progressor的时间间隔,默认?{h于foreverQ?/p>
hive.table.parameters.defaultQ新的属性字D默认|默认是emptyI;
hive.variable.substituteQ是否支持变量替换,如果开启的话,支持语法?{var} ${system:var}?{env.var}Q默认是trueQ?/p>
hive.error.on.empty.partitionQ在遇到l果为空的动态分区时是否报错Q默认是falseQ?/p>
hive.exim.uri.scheme.whitelistQ在导入导出数据时提供的一个白名单列表Q列表项之间由逗号分隔Q默认hdfs,pfileQ?/p>
hive.limit.row.max.sizeQ字面意思理解就是在使用limit做数据的子集查询时保证的最行数据量,默认?00000Q?/p>
hive.limit.optimize.limit.fileQ用简单limit查询数据子集Ӟ可抽L最大文件数Q默认是10Q?/p>
hive.limit.optimize.enableQ用简单limit抽样数据时是否开启优化选项Q默认是falseQ关于limit的优化问题,在hive programming书中解释的是q个feature有drawbackQ对于抽L不确定性给Z风险提示Q?/p>
hive.limit.optimize.fetch.maxQ用简单limit抽样数据允许的最大行敎ͼ默认50000Q查询query受限Qinsert不受影响Q?/p>
hive.rework.mapredworkQ是否重做mapreduceQ默认是falseQ?/p>
hive.sample.seednumberQ用来区分抽L数字Q默认是0Q?/p>
hive.io.exception.handlersQio异常处理handlercd表,默认是空Q当record reader发生io异常Ӟp些handler来处理异常;
hive.autogen.columnalias.prefix.labelQ当在执行中自动产生列别名的前缀Q当cMcountq样的聚合函数v作用Ӟ如果不明指出count(a) as xxx的话Q那么默认会从列的位|的数字开始算h加,比如W一个count的结果会冠以列名_c0Q接下来依次cLQ默认值是_cQ数据开发过E中应该很多人都看到q这个别名;
hive.autogen.columnalias.prefix.includefuncnameQ在自动生成列别名时是否带函数的名字Q默认是falseQ?/p>
hive.exec.perf.loggerQ负责记录客L性能指标的日志类名,必须是org.apache.hadoop.hive.ql.log.PerfLogger的子c,默认是org.apache.hadoop.hive.ql.log.PerfLoggerQ?/p>
hive.start.cleanup.scratchdirQ当启动hive服务时是否清Ihive的scratch目录Q默认是falseQ?/p>
hive.output.file.extensionQ输出文件扩展名Q默认是I;
hive.insert.into.multilevel.dirsQ是否插入到多目录Q默认是falseQ?/p>
hive.files.umask.valueQhive创徏文gҎ的dfs.umask|默认?002Q?/p>
hive.exec.script.allow.partial.consumptionQhive是否允许脚本不从标准输入中读取Q何内容就成功退出,默认关闭falseQ?/p>
hive.script.operator.id.env.varQ在用户使用transform函数做自定义map/reduceӞ存储唯一的脚本标识的环境变量的名字,默认HIVE_SCRIPT_OPERATOR_IDQ?/p>
hive.exec.compress.outputQ控制hive的查询结果输出是否进行压~,压羃方式在hadoop的mapred.output.compress中配|,默认不压~falseQ?/p>
hive.exec.compress.intermediateQ控制hive的查询中间结果是否进行压~,同上条配|,默认不压~falseQ?/p>
hive.exec.parallelQhive的执行job是否q行执行Q默认不开启falseQ在很多操作如joinӞ子查询之间ƈ无关联可独立q行Q这U情况下开启ƈ行运可以大大加速;
hvie.exec.parallel.thread.numberQƈ行运开启时Q允许多作业同时计,默认?Q?/p>
hive.exec.rowoffsetQ是否提供行偏移量的虚拟列,默认是false不提供,Hive有两个虚拟列:一个是INPUT__FILE__NAME,表示输入文g的\径,另外一个是BLOCK__OFFSET__INSIDE__FILEQ表C录在文g中的块偏U量Q这Ҏ查出CW合预期或者nulll果的查询是很有帮助的(来自q篇文章Q;
hive.task.progressQ控制hive是否在执行过E中周期性的更新dq度计数器,开启这个配|可以帮助job tracker更好的监控Q务的执行情况Q但是会带来一定的性能损耗,当动态分区标志hive.exec.dynamic.partition开启时Q本配置自动开启;
hive.exec.pre.hooksQ执行前|条Ӟ一个用逗号分隔开的实Corg.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext接口的java class列表Q配|了该配|后Q每个hived执行前都要执行这个执行前钩子Q默认是I;
hive.exec.post.hooksQ同上,执行后钩子,默认是空Q?/p>
hive.exec.failure.hooksQ同上,异常旉子,在程序发生异常时执行Q默认是I;
hive.mergejob.maponlyQ试囄成一个只有map的Q务去做mergeQ前提是支持CombineHiveInputFormatQ默认开启trueQ?/p>
hive.mapjoin.smalltable.filesizeQ输入表文g的mapjoin阈|如果输入文g的大小于该|则试囑ְ普通join转化为mapjoinQ默?5MBQ?/p>
hive.mapjoin.localtask.max.memory.usageQmapjoin本地d执行时hash表容Ukey/value的最大量Q超q这个值的话本CQ务会自动退出,默认?.9Q?/p>
hive.mapjoin.followby.gby.localtask.max.memory.usageQ类g面,只不q是如果mapjoin后有一个group by的话Q该配置控制cMq样的query的本地内存容量上限,默认?.55Q?/p>
hive.mapjoin.check.memory.rowsQ在q算了多行后执行内存用量查,默认100000Q?/p>
hive.heartbeat.intervalQ发送心跳的旉间隔Q在mapjoin和filter操作中用,默认1000Q?/p>
hive.auto.convert.joinQ根据输入文件的大小军_是否普通join转换为mapjoin的一U优化,默认不开启falseQ?/p>
hive.script.auto.progressQhive的transform/map/reduce脚本执行时是否自动的进度信息发送给TaskTracker来避免Q务没有响应被误杀Q本来是当脚本输出到标准错误Ӟ发送进度信息,但是开启该后Q输出到标准错误也不会导致信息发送,因此有可能会造成脚本有死循环产生Q但是TaskTracker却没有检查到从而一直@环下去;
hive.script.serdeQ用戯本{换输入到输出时的SerDeU束Q默认是org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDeQ?/p>
hive.script.recordreaderQ从脚本L据的时候的默认readerQ默认是org.apache.hadoop.hive.ql.exec.TextRecordReaderQ?/p>
hive.script.recordwriterQ写数据到脚本时的默认writerQ默认org.apache.hadoop.hive.ql.exec.TextRecordWriterQ?/p>
hive.input.formatQ输入格式,默认是org.apache.hadoop.hive.ql.io.CombineHiveInputFormatQ如果出现问题,可以改用org.apache.hadoop.hive.ql.io.HiveInputFormatQ?/p>
hive.udtf.auto.progressQUDTF执行时hive是否发送进度信息到TaskTrackerQ默认是falseQ?/p>
hive.mapred.reduce.tasks.speculative.executionQreduced推测执行是否开启,默认是trueQ?/p>
hive.exec.counters.pull.intervalQ运行中job轮询JobTracker的时间间隔,讄会影响JobTracker的loadQ设|大可能看不行Q务的信息Q要d^衡,默认?000Q?/p>
hive.enforce.bucketingQ数据分桶是否被强制执行Q默认falseQ如果开启,则写入table数据时会启动分桶Q个人对分桶的理解可以参?a >q篇文章Q写的较清楚Q有CZQ分桶在做全表查询和带有分区字段查询时感觉媄响不大,主要作用在samplingQ?/p>
hive.enforce.sortingQ开启强制排序时Q插数据到表中会q行强制排序Q默认falseQ?/p>
hive.optimize.reducededuplicationQ如果数据已l根据相同的key做好聚合Q那么去除掉多余的map/reduce作业Q此配置是文档的推荐配置Q徏议打开Q默认是trueQ?/p>
hive.exec.dynamic.partitionQ在DML/DDL中是否支持动态分区,默认falseQ?/p>
hive.exec.dynamic.partition.modeQ默认strictQ在strict模式下,动态分区的使用必须在一个静态分区确认的情况下,其他分区可以是动态;
hive.exec.max.dynamic.partitionsQ动态分区的上限Q默?000Q?/p>
hive.exec.max.dynamic.partitions.pernodeQ每个mapper/reducer节点可以创徏的最大动态分区数Q默?00Q?/p>
hive.exec.max.created.filesQ一个mapreduce作业能创建的HDFS文g最大数Q默认是100000Q?/p>
hive.exec.default.partition.nameQ当动态分区启用时Q如果数据列里包含null或者空字符串的话,数据会被插入到这个分区,默认名字是__HIVE_DEFAULT_PARTITION__Q?/p>
hive.fetch.output.serdeQFetchTask序列化fetch输出旉要的SerDeQ默认是org.apache.hadoop.hive.serde2.DelimitedJSONSerDe;
hive.exec.mode.local.autoQ是否由hive军_自动在local模式下运行,默认是falseQ关于满什么条件开启localmodeQ可以参?a >q篇文章Q?/p>
mapred.reduce.tasksQ每个作业的reduced敎ͼ默认是hadoop client的配|?个;
hive.exec.reducers.bytes.per.reducerQ每个reducer的大,默认?GQ输入文件如果是10GQ那么就会v10个reducerQ?/p>
hive.exec.reducers.maxQreducer的最大个敎ͼ如果在mapred.reduce.tasks讄|那么hive取该g为reducers的最大可能倹{当然还要依赖(输入文g大小/hive.exec.reducers.bytes.per.reducerQ所得出的大,取其g为reducer的个敎ͼhive默认?99Q?/p>
hive.fileformat.checkQ加载数据文件时是否校验文g格式Q默认是trueQ?/p>
hive.groupby.skewindataQgroup by操作是否允许数据倾斜Q默认是falseQ当讄为trueӞ执行计划会生成两个map/reduce作业Q第一个MR中会map的结果随机分布到reduce中,辑ֈ负蝲均衡的目的来解决数据倾斜Q可以参看阿里巴巴数据^台的q篇文章了解hive对于数据倾斜时group by的处理;
hive.groupby.mapaggr.checkintervalQmap端做聚合Ӟgroup by 的key所允许的数据行敎ͼ过该值则q行分拆Q默认是100000Q?/p>
hive.mapred.local.memQ本地模式时Qmap/reduce的内存用量Q默认是0Q就是无限制Q?/p>
hive.mapjoin.followby.map.aggr.hash.percentmemoryQmap端聚合时hash表的内存占比Q该讄U束group by在map join后进行,否则使用hive.map.aggr.hash.percentmemory来确认内存占比,默认?.3Q?/p>
hive.map.aggr.hash.force.flush.memeory.thresholdQmap端聚合时hash表的最大可用内存,如果过该值则q行flush数据Q默认是0.9Q?/p>
hive.map.aggr.hash.min.reductionQ如果hash表的定w与输入行C比超q这个数Q那么map端的hash聚合被关闭Q默认是0.5Q设|ؓ1可以保证hash聚合怸被关闭;
hive.optimize.groupbyQ在做分区和表查询时是否做分桶group byQ默认开启trueQ?/p>
hive.multigroupby.singlemrQ将多个group by产出Z个单一map/reduced计划Q当然约束前提是group by有相同的keyQ默认是falseQ?/p>
hive.optimize.cpQ列裁剪Q默认开启trueQ在做查询时只读取用到的列,q个是个有用的优化;
hive.optimize.index.filterQ自动用烦引,默认不开启falseQ?/p>
hive.optimize.index.groupbyQ是否用聚集烦引优化group-by查询Q默认关闭falseQ?/p>
hive.optimize.ppdQ是否支持谓词下推,默认开启;所谓谓词下推,外层查询块?WHERE 子句中的谓词Ud所包含的较低层查询块(例如视图Q,从而能够提早进行数据过滤以及有可能更好地利用烦引?a >q篇中文文章单的说明了在关系数据库里的应用;
hive.optimize.ppd.storageQ谓词下推开启时Q谓词是否下推到存储handlerQ默认开启,在谓词下推关闭时不v作用Q?/p>
hive.ppd.recognizetransivityQ在{值join条g下是否地重复的谓词qo器,默认开启;
hive.join.cache.sizeQ在做表join时缓存在内存中的行数Q默?5000Q?/p>
hive.mapjoin.bucket.cache.sizeQmapjoin时内存cache的每个key要存储多个valueQ默?00Q?/p>
hive.optimize.skewjoinQ是否开启数据倾斜的join优化Q默认不开启falseQ?/p>
hive.skewjoin.keyQ判断数据倾斜的阈|如果在join中发现同Lkey过该值则认ؓ是该key是倾斜的join keyQ默认是100000Q?/p>
hive.skewjoin.mapjoin.map.tasksQ在数据倾斜join时map join的map数控Ӟ默认?0000Q?/p>
hive.skewjoin.mapjoin.min.splitQ数据倾斜join时map join的mapd的最split大小Q默认是33554432Q该参数要结合上面的参数共同使用来进行细_度的控Ӟ
hive.mapred.modeQhive操作执行时的模式Q默认是nonstrict非严格模式,如果是strict模式Q很多有风险的查询会被禁止运行,比如W卡积的join和动态分区;
hive的配|:
hive.ddl.output.formatQhive的ddl语句的输出格式,默认是textQ纯文本Q还有json格式Q这个是0.90以后才出的新配置Q?/p>
hive.exec.script.wrapperQhive调用脚本时的包装器,默认是nullQ如果设|ؓpython的话Q那么在做脚本调用操作时语句会变为python <script command>Qnull的话是直接执行<script command>Q?/p>
hive.exec.planQhive执行计划的文件\径,默认是nullQ会在运行时自动讄QŞ如hdfs://xxxx/xxx/xxQ?/p>
hive.exec.scratchdirQhive用来存储不同阶段的map/reduce的执行计划的目录Q同时也存储中间输出l果Q默认是/tmp/<user.name>/hiveQ我们实际一般会按组区分Q然后组内自Z个tmp目录存储Q?/p>
hive.exec.submitviachildQ在非local模式下,军_hive是否要在独立的jvm中执行map/reduceQ默认是falseQ也是说默认map/reduce的作业是在hive的jvm上去提交的;
hive.exec.script.maxerrsizeQ当用户调用transform或者map或者reduce执行脚本Ӟ最大的序列化错误数Q默?00000Q一般也不用修改Q?/p>
hive.exec.compress.outputQ一个查询的最后一个map/reduced输出是否被压~的标志Q默认ؓfalseQ但是一般会开启ؓtrueQ好处的话,Ҏq篇文章Q节省空间不_在不考虑cpu压力的时候会提高ioQ?/p>
hive.exec.compress.intermediateQ类g个,在一个查询的中间的map/reduced输出是否要被压羃Q默认falseQ但一般也会手动开启,q篇文章Ҏ了这两个配置Q其中回复讲刎ͼThe former affects compression between MapReduce stages in a Hive query. The latter affects compression between map and reduce phases during the shuffle. 如此而已Q?/p>
hive.jar.pathQ当使用独立的jvm提交作业Ӟhive_cli.jar所在的位置Q无默认|
hive.aux.jars.pathQ当用户自定义了UDF或者SerDeQ这些插件的jar都要攑ֈq个目录下,无默认|
hive.partition.pruningQ在~译器发C个query语句中用分然而未提供M分区谓词做查询时Q抛Z个错误从而保护分Q默认是nonstrictQ(待读源码后细化,|上资料极少Q?/p>
hive.map.aggrQmap端聚合是否开启,默认开启;q篇文章l出了map端聚合的很详l的描述Q?/p>
hive.join.emit.intervalQ在发出joinl果之前对join最x作缓存多行的设定,默认1000Q?a >hive jira里有个对该D|太的bugfixQ?/p>
hive.map.aggr.hash.percentmemoryQmap端聚合时hash表所占用的内存比例,默认0.5Q这个在map端聚合开启后使用Q参看hive.map.aggr里提到的文章Q?
hive.default.fileformatQCREATE TABLE语句的默认文件格式,默认TextFileQ其他可选的有SequenceFile、RCFileq有OrcQ对于文件格式的说明ҎQ?a >q里有篇Ҏ可以参考,infoq上有文?/a>讲了hadoop的文件格式; hive.merge.mapfilesQ在只有map的作业结束时合ƈ文Ӟ默认开启trueQ? hive.merge.mapredfilesQ在一个map/reduce作业l束后合q小文gQ默认不开启falseQ?/p> hive.merge.size.per.taskQ作业结束时合ƈ文g的大,默认256MBQ?/p> hive.merge.smallfiles.avgsizeQ在作业输出文g于该值时Qv一个额外的map/reduce作业小文g合ƈ为大文gQ小文g的基本阈|讄大点可以减少文件个敎ͼ需要mapfiles和mapredfiles为trueQ默认值是16MBQ?/p>
1Qhadoop fs –fs [local | <file system URI>]Q声明hadoop使用的文件系l,如果不声明的话,使用当前配置文g配置的,按如下顺序查找:hadoop jar里的hadoop-default.xml->$HADOOP_CONF_DIR下的hadoop-default.xml->$HADOOP_CONF_DIR下的hadoop-site.xml。用local代表本地文件系l作为hadoop的DFS。如果传递uri做参敎ͼ那么是特定的文件系l作为DFS?/p>
2Qhadoop fs –ls <path>Q等同于本地pȝ的lsQ列出在指定目录下的文g内容Q支持pattern匚w。输出格式如filename(full path) <r n> size.其中n代表replica的个敎ͼsize代表大小Q单位bytesQ?/p>
3Qhadoop fs –lsr <path>Q递归列出匚wpattern的文件信息,cMlsQ只不过递归列出所有子目录信息?/p>
4Qhadoop fs –du <path>Q列出匹配pattern的指定的文gpȝI间总量Q单位bytesQ,{h于unix下的针对目录的du –sb <path>/*和针Ҏ件的du –b <path> Q输出格式如name(full path) size(in bytes)?/p>
5Qhadoop fs –dus <path>Q等价于-duQ输出格式也相同Q只不过{h于unix的du -sb?/p>
6Qhadoop fs –mv <src> <dst>Q将制定格式的文?move到指定的目标位置。当src为多个文件时Qdst必须是个目录?/p>
7Qhadoop fs –cp <src> <dst>Q拷贝文件到目标位置Q当src为多个文件时Qdst必须是个目录?/p>
8Qhadoop fs –rm [-skipTrash] <src>Q删除匹配pattern的指定文Ӟ{h于unix下的rm <src>?/p>
9Qhadoop fs –rmr [skipTrash] <src>Q递归删掉所有的文g和目录,{h于unix下的rm –rf <src>?/p>
10Qhadoop fs –rmi [skipTrash] <src>Q等价于unix的rm –rfi <src>?/p>
11Qhadoop fs –put <localsrc> … <dst>Q从本地pȝ拯文g到DFS?/p>
12Qhadoop fs –copyFromLocal <localsrc> … <dst>Q等价于-put?/p>
13Qhadoop fs –moveFromLocal <localsrc> … <dst>Q等同于-putQ只不过源文件在拯后被删除?/p>
14Qhadoop fs –get [-ignoreCrc] [-crc] <src> <localdst>Q从DFS拯文g到本地文件系l,文g匚wpatternQ若是多个文Ӟ则dst必须是目录?/p>
15Qhadoop fs –getmerge <src> <localdst>Q顾名思义Q从DFS拯多个文g、合q排序ؓ一个文件到本地文gpȝ?/p>
16Qhadoop fs –cat <src>Q展C文件内宏V?/p>
17Qhadoop fs –copyToLocal [-ignoreCrc] [-crc] <src> <localdst>Q等价于-get?/p>
18Qhadoop fs –mkdir <path>Q在指定位置创徏目录?/p>
19Qhadoop fs –setrep [-R] [-w] <rep> <path/file>Q设|文件的备䆾U别Q?R标志控制是否递归讄子目录及文g?/p>
20Qhadoop fs –chmod [-R] <MODE[,MODE]…|OCTALMODE> PATH…Q修Ҏ件的权限Q?R标记递归修改。MODE为a+r,g-w,+rwx{,OCTALMODE?55q样?/p>
21Qhadoop fs -chown [-R] [OWNER][:[GROUP]] PATH…Q修Ҏ件的所有者和l?R表示递归?/p>
22Qhadoop fs -chgrp [-R] GROUP PATH…Q等价于-chown … :GROUP …?/p>
23Qhadoop fs –count[-q] <path>Q计数文件个数及所占空间的详情Q输格的列的含义依次为:DIR_COUNT,FILE_COUNT,CONTENT_SIZE,FILE_NAME或者如果加?q的话Q还会列出QUOTA,REMAINING_QUOTA,SPACE_QUOTA,REMAINING_SPACE_QUOTA?/p>
最后就是万能的hadoop fs –help [cmd]啦~~
outlineQ?/p>
数据可视化背景:数据+可视?what & whyQ?/p>
数据Q不用多_最强大的积累,世界的来源,没有数据的积累,人类什么都不是。数据有几大c:
俗话_一图胜千言Q各U感觉器官接受信息的比例是:视觉87Q,听觉7Q,嗅觉3Q?Q,触觉1Q?Q,呌1Q?/p>
【展C各U比例数据?/p>
数据可视化:如何图表展示 how
1Q时间趋势的可视?/p>
旉是个天然的数据维度,我们时刻x旉Q不论数据是哪种cdQ我们必然会期望看到它在q段旉内是上升q是下降Q发现其中的势Q回过去,越现在Q预未来?/p>
势数据分离散型和连l型Q离散的数据Z事g的,一D|间一个事件就会发生若q次Q比如一个赛季就会发?8球比赛,WDM中基于天的数据都是离散事Ӟ比如我们l计crash的次敎ͼ而连l型的数据是Z实时变化的,可以认ؓ是随着旉不断变化的,比如温度Q会一直持l变化。ȝQ我们hcd义的最时间单位基本上在秒q个概念上,我们做数据的可以q样d分离散和q箋Q如果事件在很小的时间粒度发生,比如UVq样的,基本可以定位到秒U别Q那么这是连l型数据Q如刚才的crash信息Q因Z可能是每U都在发生,甚至都不是每分钟都发生,那么可以定义为离散型数据?/p>
--L型:柱Ş囑֒散点图,当然对于非时序的分类数据Q离散型的数据图展示也满?/p>
基本柱Ş图:横u旉_Uu数据_要注意柱形宽度,柱Ş间隔Q柱形高度,柱Ş囄视觉U烦是:高度Q数D,柱Ş矮Q数D大,柱Ş高。tip1Q处理的数据都是正数Ӟhq让柱Ş囄数Du?开始,否则会让人难以从视觉上比较各柱Ş的高度。如果在旉势柱Ş图上惌辑֤一个维度的概念Q可以利用柱形颜色加以区分。tip2Q柱形间隔选择时要心Q如果间隔宽度和柱Ş宽度相近Q视觉上会生振动效应,lh感觉是柱Ş和间隔的角色互换?/p>
堆叠柱Ş图:在基本柱形图上,堆叠多个矩Ş。如果数据存在子分类Qƈ且各个子分类之和是有意义的,可以用堆叠柱形图。注意一点,q种情况子分cM宜过多?/p>
散点图:用圆点代替矩形,可能意义更明,y而集中,q种表达有一U?#8220;?#8221;的感觉。散点图的视觉线索是Q位|,通过xy坐标来观察,通过与其他点的位|来比较。散点图不强制要求从0开始。注意一点,数据不永q是真实的,W误{各U原因都会导致数据偏ȝ实?/p>
--q箋型:其实数据{h于离散型Q区别只在表辄现实意义?/p>
点点q接Q散点图q接hQ基本折U图Q更有跃动感Q默认了U性变化,也就是说从a点到b点的E_变化。(表示人口变化没问题)
台阶形:适合表达会长旉停留在某个数gQ然后突然增长或衰退的事务变化。(银行利率Q?/p>
qx形:数据Ҏ׃势不是单的U性稳定趋势,那么可以估算Z条^滑曲U,一般我们会拟合Z条样条曲U或者贝塞尔曲线?/p>
2Q比例的可视化(分类的可视化Q?/p>
在比例中L什么?最大,最,M分布Q?/p>
--整体中包含各个部分:占比数据非常重要?/p>
饼图Q像切蛋p一样切成若q个楔ŞQ每个楔形代表整体的一个部分,楔Ş的角度代表占比(视觉U烦也可以认为是面积Q,d一定是100%。饼囑֜表示数据时有着一些争议,因ؓ它不像柱形图或者基于位|的囑Ş那样_Q衡量角度或比例要比衡量长度复杂。但是如果数据块不是特别多,饼图是个很不错的选择Q良好组l数据,不要一个饼囑ֈ成太多块Q。对饼图的一般设计是选择好颜Ԍ同时按照序?2Ҏ向开始顺旉排列楔Ş块。颜色的深浅代表了重点的强弱Q需要强调的部分颜色要深?/p>
面包圈图Q中间有z的饼图Q视觉线索不再是角度Q但是跨q的弧度仍然和面U一样可以作觉线索。面包圈图中间部分适合攄标签或者其他内宏V?/p>
堆叠柱Ş图:不仅仅用于时间趋势数据类型,对于比例的展C,堆叠囑֏以通过改变横u为类别uQ将柱Ş高度定义为单个类别的dQ内部柱形高度代表了子分cȝ数倹{堆叠柱形图的表达能力是N个饼囄和?/p>
板块层图:treemapQ一U基于面U的可视化方式,通过每一个板块(矩ŞQ的寸大小来度量。外部矩形代表父cdQ而内部矩形代表子cd。最适合昄层l构和树状结构的数据?/p>
--带时间属性的比例Q比例加旉属性,很自然的l合
堆叠面积图:水^轴时_垂直轴是比例Q?00%Q,可以理解为按旉一pd的堆叠柱形图qv来?/p>
3Q关pȝ可视?/p>
关系中寻求的是变量之间的关联,比如一个量增加了,另一个怎么变?它们是因果关p还是关联关p,更深入可以探求到数据的分布?/p>
--兌性:联系QcorrelationQ,发现事物之间的关联,如果定兌性,那么可以Ҏ一已知指标来预测另一指标?/p>
散点图:表示变量之间的关p,q时的散点图横u代表一个变量的数|Uu也代表一个变量的数|每个点的坐标xy代表了关pR这时的散点图读图方法是Q从左往叻I如果是上升的势Q那么是正相养I否则是负相关Q如果杂乱无章,则不相关?/p>
散点囄阵:多个x_多个y_多个变量之间q行xy比较?/p>
气图:同散点图一P只不q气泡的大小表示W三个变量(比散点图多一个维度)。tipQ用圆Ş表示数据Ӟ要用面积来定义尺寸,而不是半径、直径或周长。气泡图中的圆Ş可以被正方Ş{其他图形代ѝ?/p>
--分布Q利用^均数、中位数、众数、重心、线型等来判断数据的分布?/p>
直方图:{h于柱形图Q横轴表C某个gl性变量,Uu表示频率或可能性,柱Ş高度表示柱Ş所在取值域出现的频率或可能性,柱Ş宽度表示数Du上的某个取值域Q取值域应该彼此一致。一般直方图的柱形间隔非常小或者没有,q且英文叫做histogramQ而柱形图我们叫bar或者column。直方图用来主要观察分布Q而不是看到每个具体的数倹{比如图像分析里有个典型的图像颜色特征叫做颜色直方图Q就是统计一q图像的各个灰度U别的像素个数绘制的一个图形?/p>
密度图:直方囄数Du是gl性的Q但是整个分布依然被分成了多个柱形。每个柱形代表的都是一些条目的集合。对于柱形内部的变化Q柱形图无法表达Q因此可以利用密度图来对分布的细节变化进行可视化。基本架构是Q横轴代表数DuQ纵轴代表可能性大或者比例,曲线高度代表相应值发生的可能性,曲线下的面积代表整体1.
最后还可以考虑直方囑֒密度囄l合Q等价于q囑֒折线囄合?/p>
4Q空间关pȝ可视?/p>
我们一般把I间信息的寻求量化到地图层面Q基于地域维度。利用地囑ցI间关系的可视化Q要比用常规图表更直接,l合地域l度使地区数据更显而易见。同时对于个别感兴趣的区域的数据可以更方便的观察Q可以让Z专n数据?/p>
--具体位置Q给出地点的l纬度信?/p>
单纯点图Q直接将l纬度点信息标注到地囑֯应位|。类似现实中在地图上按图钉。这L可视化只能标注出发生特定事g的地点,也就是指明了cdQ维度的话只包含地域l度和事件类别维度。可以看做一l。在q个点图上的扩展是加入跟踪信息Q将有序的点用直U连接v来。线的长短将会成为明昄视觉U烦表明点与点之间的距离关系?/p>
气地图Q在单纯点图的基上,加一个维度,表明了在发生特定cM件的地区的数值大?/p>
--地区Q以宏观更大范围的汇L?/p>
地区着Ԍ以地区区域ؓ单位Q通过着色表C指标的高低?/p>
--跨越旉和空_时间维度加入空间地NQ查看随旉变化在地区维度上的数据指标变化?/p>
pdl图Q将一l地区的图表Q前面说q的点图或者着色区域图Q按旉序排放Q随着视线的移动(从左到右或从上到下)Q可以看出变化趋ѝ?/p>
ȝ变化Q不是将状态按序展示出来Q而是q行差额计算Q直接将变化以着色图的Ş式展现。观察更聚焦,直接看变化?/p>
动画Q让数据动v来,是最直观和吸引h的设计?/p>
未来Q想象力
不管怎么Ԍ数据可视化是辅助我们拿数据讲故事的最有力的武器?/p>
与我们结合:数据可视化是最l的展现Q数据品的l极形态有两种Q一U是利用数据做强大的分析和挖掘,得到有意义的可以汇L知识的内容;另一U就是通过丰富的想象力用可视化形式其展示?/strong>