当前位置: 首页 > news >正文

HBase常用Shell命令

HBase提供了一个非常方便的命令行交互工具HBase Shell。通过HBase Shell,HBase可以与MySQL命令行一样创建表、索引,也可以增加、删除和修改数据,同时集群的管理、状态查看等也可以通过HBase Shell实现。

一、数据定义语言

数据定义语言(Data Definition Language,DDL),包括数据库表的创建、修改等语句。

1,创建表

创建表的语句如下:
create 's_behavior', {NAME => 'pc'} , {NAME => 'ph'}
该语句创建了一个s_behavior表,用来存储用户的行为数据,这个表有两个列族,列族pc用来存储用户PC端的用户行为数据,列族ph用来存储用户手机端的用户行为数据。

2,查看所有表

查看所有表的语句如下:
list
该语句会列出HBase数据库中所有已经创建的表。

3,查看已创建的表

查看已创建的表的语句如下:
describe 's_behavior'

在这里插入图片描述
虽然在创建表的时候没有指定任何属性,但是HBase默认会给表设置一些属性:
(1)BLOOMFILTER:布隆过滤器。做Scan操作时用来排除待扫描的存储文件,第9章会有详细描述。
(2)IN_MEMORY:数据是否常驻块缓存。一般只有HBase系统的元数据表才会设置为true。
(3)VERSIONS:对这个表HBase应该保留多少个数据版本。HBase对表的数据行可以保留多个数据版本,以时间戳来区分。
(4)KEEP_DELETED_CELLS:保留删除的数据。意味着可以通过Get或者Scan请求获取已经被删除的数据(如果数据删除后经过了一次大合并,那么这些删除的数据也会被清理),只要这行数据的时间戳在查询的时间范围即可。注意,如果需要开启集群间复制,则这个属性必须为true,否则可能导致数据复制失败。
(5)DATA_BLOCK_ENCODING:数据块编码。用类似于压缩算法的编码形式来节省存储空间,主要是针对行键,用时间换空间,默认情况下不启用数据块编码,第9章会有详细描述。
(6)COMPRESSION:压缩方式。HBase提供了多种压缩方式(如Snappy、LZO、gzip等)用来在数据存储到磁盘之前对数据进行压缩,以减少存储空间。第9章也会详细介绍并对比各种压缩方式。
(7)TTL:存活时间(Time To Live),数据的有效时长。超过有效时长的数据在大合并的时候会被删除。
(8)BLOCKSIZE:HBase读取数据的最小单元。设置过大会导致读取很多不需要的数据,过小则会产生更多的索引文件,默认大小为64 KB。
(9)REPLICATION_SCOPE:集群间数据复制的开关。当集群间数据复制配置好后,REPLICATION_SCOPE=1表示开启复制。默认值为0,表示不开启复制。

4,修改表

修改表的模式(schema)之前需要先将表下线,然后执行修改的命令,再上线。下面的代码将s_behavior表修改为开启集群间复制:
disable 's_behavior'
alter 's_behavior', 
{NAME=>"cf", REPLICATION_SCOPE=>"1", KEEP_DELETED_CELLS => 'TRUE'}enable 's_behavior'

二、数据操纵语言

数据操纵语言(Data Manipulation Language,DML)包括插入、获取、扫描数据的put命令、get命令、scan命令,以及删除数据的delete命令、deleteall命令和truncate命令。

1,put命令

put命令用来插入一行数据到HBase表。

格式:
put <table>,<rowkey>,<列族:列限定符>,<值>
示例:
hbase(main):004:0> put 's_behavior','12345_1516592489001_1','pc:v','1001'
0 row(s) in 0.2020 secondshbase(main):005:0> put 's_behavior','12345_1516592489001_1','ph:o','1001'
0 row(s) in 0.0050 second
第一条命令插入一条用户PC端行为数据,
第二条命令插入一条用户手机端行为数据。
注意,两条命令行键相同,只是指定了不同的列族,因此实际上两条数据在HBase中逻辑上是同一条数据。之后用该行键可以唯一地定位到这两个列族的数据。

2,get命令

get命令用来根据行键获取HBase表的一条记录。

格式:
get <table>,<rowkey>
示例:
使用get命令通过行键获取表s_behavior的一行数据,包括这行数据的所有列族:
hbase(main):006:0> get 's_behavior','12345_1516592489001_1'
COLUMN                             CELL 
pc:v                         timestamp=2022-01-24T19:33:18.352, value=1001 
ph:o                         timestamp=2022-01-24T19:33:35.071, value=1001
2 row(s) in 0.0330 seconds通过给get命令指定时间戳来获取一行数据某个时刻的镜像:
hbase(main):007:0> get 's_behavior','12345_1516592489001_1' , {TIMESTAMP => '1643023998352'}
COLUMN                             CELL 
pc:v                         timestamp=2022-01-24T19:33:18.352, value=1001
1 row(s) in 0.0120 secondsget命令也支持获取数据的多个版本,但是需要在创建表的语句中指定VERSIONS属性。先修改表支持多个版本,然后用get命令获取多个版本的数据:
hbase(main):008:0> alter 's_behavior',NAME=>'pc',VERSIONS =>3
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 1.9370 secondshbase(main):009:0> put 's_behavior','12345_1516592489001_1','
pc:v','1002'
0 row(s) in 0.0100 secondshbase:010:0> get 's_behavior','12345_1516592489001_1',{COLUMN => 'pc:v',VERSIONS=>2}
COLUMN                        CELL 
pc:v                     timestamp=2022-01-24T19:49:20.398, value=1002 
pc:v                     timestamp=2022-01-24T19:33:18.352, value=1001
1 row(s)Took 0.0266 seconds

3,scan命令

scan命令用来扫描表的数据。scan命令是HBase数据查询命令中最复杂的命令,需要特别注意查询的数据量,以免由于扫描数据过大导致HBase集群出现响应延迟。

格式:
scan <table>
示例:
使用scan命令来查询表s_behavior中的所有记录:
hbase(main):012:0* scan 's_behavior'
ROW                            COLUMN+CELL 
12345_1516592489001_1  column=pc:v, timestamp=2022-01-24T19:49:20.398, value=1002 12345_1516592489001_1  column=ph:o, timestamp=2022-01-24T19:33:35.071, value=1001
1 row(s) in 0.0120 seconds

(1)获取时间区间内数据

示例:
使用时间区间获取“1643021990187<=时间戳<1643023998353”的数据:
hbase(main):013:0> scan 's_behavior', {TIMERANGE => [1643021990187,1643023998353]}
ROW                               COLUMN+CELL 
12345_1516592489001_1     column=ph:o, timestamp=2022-01-24T19:33:18.352, value=1001
1 row(s) in 0.0190 seconds

(2)获取多个版本数据

示例:
使用VERSIONS参数获取表的两个版本数据:
hbase(main):003:0* scan 's_behavior', {VERSIONS=>2}
ROW                           COLUMN+CELL 
12345_1516592489001_1  column=pc:v, timestamp=2022-01-24T19:49:20.398, value=1002 
12345_1516592489001_1  column=pc:v, timestamp=2022-01-24T19:33:18.352, value=1001 
12345_1516592489001_1  column=ph:o, timestamp=2022-01-24T19:33:35.071, value=1001
1 row(s) in 0.1200 seconds

(3)获取用户前几行数据

示例:
获取ID为12345的用户的前5行数据:
hbase(main):013:0* scan 's_behavior', {FILTER => "PrefixFilter('12345_')" ,COLUM
NS => ['pc'],LIMIT=>5}ROW                               COLUMN+CELL 
12345_1516592489001_1     column=pc:v, timestamp=1521442781396, value=1002 
12345_1516592489001_2     column=pc:v, timestamp=1521442781447, value=1003 
12345_1516592489001_3     column=pc:v, timestamp=1521442781471, value=1004 
12345_1516592489001_4     column=pc:v, timestamp=1521442781492, value=1005 
12345_1516592489001_5     column=pc:v, timestamp=1521442781513, value=1006
5 row(s) in 0.0240 seconds

因为表s_behavior的行键都是以用户ID开头,所以可以使用一个前缀过滤器。注意,需要在用户ID(12345)后面带上下划线,否则会匹配到行键为123450_xxx等类似的数据。

(4)获取某个用户某个时间区间内产生的PC端行为数据

scan命令可以指定扫描开始和结束行键。

示例:
获取ID为12345的用户的某个时间区间内产生的PC端行为数据,使用STARTROW、STOPROW参数指定扫描一个前闭后开的区间,即“STARTROW<=行键<STOPROW”:
hbase(main):014:0> scan 's_behavior', {STARTROW =>
'12345_1516592489001' ,STOPROW=>'12345_15165924890
02' ,COLUMNS => ['pc']}ROW                           COLUMN+CELL 
12345_1516592489001_1  column=pc:v, timestamp=2022-01-24T19:33:35.071, value=1002 
12345_1516592489001_2  column=pc:v, timestamp=2022-01-24T19:34:01.012, value=1003 
12345_1516592489001_3  column=pc:v, timestamp=2022-01-24T19:34:01.012, value=1004 
12345_1516592489001_4  column=pc:v, timestamp=2022-01-24T19:34:02.062, value=1005 
12345_1516592489001_5  column=pc:v, timestamp=2022-01-24T19:34:02.076, value=1006 
12345_1516592489001_6  column=pc:v, timestamp=2022-01-24T19:34:03.089, value=1007 
12345_1516592489001_7  column=pc:v, timestamp=2022-01-24T19:34:04.011, value=1008 
12345_1516592489001_8  column=pc:v, timestamp=2022-01-24T19:34:05.171, value=1009
8 row(s) in 0.0320 seconds

(5)获取用户对某种商品的行为数据

示例:
第一条命令查询表s_behavior中列值等于1001的数据,第二条命令查询表s_behavior中列值包含1002的数据:
hbase(main):015:0> scan 's_behavior', FILTER=>"ValueFilter(=,'binary:1001')"
ROW                              COLUMN+CELL 
12345_1516592489001_1  column=pc:v, timestamp=2022-01-24T19:33:18.352, value=1001 
12345_1516592489001_1  column=ph:o, timestamp=2022-01-24T19:33:35.071, value=1001
1 row(s) in 0.0430 secondshbase(main):016:0> scan's_behavior',FILTER=>"ValueFilter(=,'substring:1002')"
ROW                                           COLUMN+CELL 
12345_1516592489001_1  column=pc:v, timestamp=2022-01-24T19:33:18.352, value=1002
1 row(s) in 0.0200 seconds

(6)获取某个用户行为数据的行键

示例:
获取ID为12345的用户的行为数据行键:
hbase(main):012:0> scan 's_behavior', {FILTER => "PrefixFilter('12345') AND
KeyOnlyFilter()" , LIMIT=>3}ROW                              COLUMN+CELL 
12345_1516592489001_1   column=pc:v, timestamp=2022-01-24T19:49:20.398, value= 
12345_1516592489001_1   column=ph:o, timestamp=2022-01-24T19:33:35.071, value= 
12345_1516592489001_2   column=pc:v, timestamp=2022-01-24T19:35:32.011, value= 
12345_1516592489001_3   column=pc:v, timestamp=2022-01-24T19:35:33.169, value=
3 row(s) in 0.0470 seconds

4,delete命令、deleteall命令和truncate命令

HBase提供了delete、deleteall和truncate命令分别用来删除列、行和表的数据。

(1)delete命令删除某列数据。

格式:
delete '<table>', '<rowkey>, '<列族:列限定符>', '[<time stamp>]'
示例:
使用下面的命令可以删除行键为12345_1516592489001_1的数据行中列族为ph、列限定符为o的数据:
hbase(main):014:0> delete 's_behavior', '12345_1516592489001_1' ,'ph:o'
0 row(s) in 0.0470 seconds

(2)deleteall命令删除整行数据。

格式:
deleteall '<table>', '<rowkey>
示例:
使用下面的命令可以删除了行键为12345_1516592489001_1的数据行:
hbase(main):015:0> deleteall 's_behavior', '12345_1516592489001_1'
0 row(s) in 0.0090 seconds

(3)truncate命令删除整表数据。

格式:
truncate '<table>'示例:
使用下面的命令可以删除用户行为表s_behavior中的所有数据:
hbase(main):016:0> truncate 's_behavior'
Truncating 's_behavior' table (it may take a while): 
- Disabling table... 
- Truncating table...
0 row(s) in 3.4640 seconds

三、其他常用的Shell命令

1,复制状态查看

当HBase开启了集群间复制时,使用status命令可以查看复制的状态,包括复制延迟、待复制日志文件队列大小等。

示例:
hbase(main):017:0> status 'replication'
version 2.4.93 live servers    
master1:       SOURCE: PeerID=1, AgeOfLastShippedOp=4773835960, SizeOfLogQueue=2677,      TimeStampsOfLastShippedOp=Thu Jan 01 08:00:00 CST 1970,       Replication Lag=1521448279318       SINK  :AgeOfLastAppliedOp=0,       TimeStampsOfLastAppliedOp=Mon Dec 25 17:23:16 CST 2017    
slave1:       SOURCE: PeerID=1, AgeOfLastShippedOp=5986238820, SizeOfLogQueue=1665,       TimeStampsOfLastShippedOp=Thu Jan 01 08:00:00 CST 1970,       Replication Lag=1521448277282       SINK  :AgeOfLastAppliedOp=0,       TimeStampsOfLastAppliedOp=Mon Dec 25 11:10:14 CST 2017    
master2:       SOURCE:PeerID=1, AgeOfLastShippedOp=24121908, SizeOfLogQueue=7,       TimeStampsOfLastShippedOp=Mon Mar 19 09:46:36 CST 2018,       Replication Lag=24281038       SINK  : AgeOfLastAppliedOp=0,      TimeStampsOfLastAppliedOp=Tue Mar 13 17:02:06 CST 2018

2,分区拆分

实时在线集群一般会禁用自动拆分以免影响性能,因此当存储文件大小达到某个值后需要手动或者使用自动化程序将分区做拆分。例如,下面的代码将用户行为表s_behavior拆分为两个分区,由于行键以用户ID开始,而用户ID的第一个字符取值范围为0~9,中值为5,因此可以使用5作为拆分后两个分区的分割字符:

hbase(main):018:0>  split 's_behavior','5'
0 row(s) in 0.1060 seconds

3,分区大合并

实时在线集群会禁止大合并,应等到请求的非高峰期来定时做大合并。

示例:
手动触发大合并来压缩表s_behavior的分区,分区名称可以在HBase Web UI找到:
hbase(main):040:0> major_compact's_behavior,,1511878479015.e933a5867bd5253211a4ef90e549192f.'
0 row(s) in 0.0200 seconds

4,负载均衡开关

要对集群进行滚动升级,或者想要关闭自动负载均衡而采用手动负载均衡模式,可以使用下面的命令来开启或者关闭自动负载均衡:

hbase(main):019:0> balance_switch true
true
0 row(s) in 0.0220 secondshbase(main):020:0> balance_switch false
true
0 row(s) in 0.0090 seconds

5,分区手动迁移

如果有几个比较大的或者负载高的分区被分配到同一个分区服务器,那么这台分区服务器可能会成为整个HBase集群的瓶颈,这时候可以手动将这些分区迁移到负载低的分区服务器。

分区迁移命令格式:
move' <EncodedRegionName>',’<destServerName>’
示例:
EncodedRegionName的值是RegionName值的后缀部分,destServerName是在HBase Web UI上的分区服务器的全名。
hbase(main):002:0> move 'e933a5867bd5253211a4ef90e549192f', 'master2,16020,1513049558323'
0 row(s) in 0.0790 seconds

6,HBase运行Ruby脚本

在$HBASE_HOME/bin目录中有几个扩展名为rb的文件,可以直接使用HBase来运行这些Ruby脚本。

格式:
./hbase org.jruby.Main PATH_TO_SCRIPT
示例:
[hadoop@master1 bin]$ ./hbase org.jruby.Main get-active-master.rb
SLF4J: Class path contains multiple 
SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop-2.10.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hbase-2.4.9/lib/client-facing-thirdparty/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
master1

文章来源:《HBase入门与实践(第2版)》 作者:彭旭

文章内容仅供学习交流,如有侵犯,联系删除哦!

相关文章:

HBase常用Shell命令

HBase提供了一个非常方便的命令行交互工具HBase Shell。通过HBase Shell&#xff0c;HBase可以与MySQL命令行一样创建表、索引&#xff0c;也可以增加、删除和修改数据&#xff0c;同时集群的管理、状态查看等也可以通过HBase Shell实现。 一、数据定义语言 数据定义语言&…...

【阿里云】Apsara Clouder云计算专项技能认证-云服务器ECS入门,考试真题分享

以下是阿里云Apsara Clouder云计算专项技能认证-云服务器ECS入门真题汇总篇分享&#xff1a; 1.下列哪一个不是重置ECS密码的步骤? A. 查看实例详情 B.进入控制台 C.远程连接ECS D.点击控制台“概览” 2.针对云服务器ECS安全组说法正确的是 A.是一种物理防火墙 B.仅用于控制…...

怎样编写java程序

搭建好了Java开发环境之后&#xff0c;下面就来学习一下如何开发Java程序。为了让初学者更好地完成第一个Java程序&#xff0c;接下来通过几个步骤进行逐一讲解。 1&#xff0e;编写Java源文件 在D盘根目录下新建一个test文件夹&#xff0c;并在该文件夹中新建文本文档&#…...

面向对象设计模式:结构型模式之适配器模式

一、引入 Object Oriented Adapters 二、XX 模式 aka&#xff1a;Wrapper (包装器) 2.1 Intent 意图 Convert the interface of a class into another interface clients expect. 将一个类的接口转换成客户希望的另外一个接口. 作为两个不兼容的接口之间的桥梁 适配器模式使…...

Unity3D Shader系列之模板测试

一、 模板测试原理模板测试位于GPU渲染流水线的逐片元操作阶段&#xff0c;片元着色器完成之后就会进入模板测试&#xff0c;模板测试通过后再进入深度测试。我们的GPU中有一个模板缓冲区(Stencil Buffer)(Stencil即是模板的意思)&#xff0c;其大小为整个屏幕大小*8位&#xf…...

机器学习中的数学——精确率与召回率

在Yolov5训练完之后会有很多图片&#xff0c;它们的具体含义是什么呢&#xff1f; 通过这篇博客&#xff0c;你将清晰的明白什么是精确率、召回率。这个专栏名为白话机器学习中数学学习笔记&#xff0c;主要是用来分享一下我在 机器学习中的学习笔记及一些感悟&#xff0c;也希…...

Oracle启动数据库报ORA-01102解决办法

1.机器启动之后登录服务器使用sqlplus / as sysdba 登录数据库发现数据库并没有启动之前把数据库服务添加过开机自启动 2.使用startup命令启动数据库报错了 SYSorcl>startup; ORACLE 例程已经启动。 Total System Global Area 2471931904 bytes Fixed Size 2255752 byt…...

Go 语言面向对象编程及实践

面向对象编程是计算机科学中的一种重要的编程方法,它将数据和处理它的代码组合成对象,并将这些对象组合成更大的程序。在 Go 语言中,我们同样可以使用面向对象编程的方式进行开发。本篇文章将介绍 Go 语言面向对象编程的概念、特性、使用方法以及实践技巧。 面向对象编程概…...

0102 MySQL05

1.约束 1.约束&#xff08;constraint&#xff09;&#xff1a;在创建表时&#xff0c;可以给表中的字段加上一些约束&#xff0c;保证表中数据的完整性&#xff0c;有效性 常见的约束&#xff1f; 非空约束&#xff1a;not null 唯一性约束&#xff1a;unique 主键约束&am…...

[深入理解SSD系列 闪存2.1.3] 固态硬盘闪存的物理学原理_NAND Flash 的读、写、擦工作原理

2.1.3.1 Flash 的物理学原理与发明历程 经典物理学认为 物体越过势垒,有一阈值能量;粒子能量小于此能量则不能越过,大于此能 量则可以越过。例如骑自行车过小坡,先用力骑,如果坡很低,不蹬自行车也能 靠惯性过去。如果坡很高,不蹬自行车,车到一半就停住,然后退回去。 …...

洗地机哪家强?洗地机排行榜

随着清洁行业电器的开展&#xff0c;越来越多的新颖工具和电器开端进入消费者的生活之中。众所周知&#xff0c;面对美不胜收的清洁电器产品&#xff0c;选购也是一大头疼事&#xff0c;应该怎样选购洗地机等清洁电器呢&#xff0c;实在的用户体验和清洁效率莫过于消费者最看重…...

【Java基础 下】 029 -- 多线程

目录 一、为什么要有多线程&#xff1f; 1、线程与进程 2、多线程的应用场景 3、小结 二、多线程中的两个概念&#xff08;并发和并行&#xff09; 1、并发 2、并行 3、小结 三、多线程的三种实现方式 1、继承Thread类的方式进行实现 2、实现Runnable接口的方式进行实现 3、利用…...

R语言生物群落(生态)数据统计分析与绘图

查看原文>>>R语言生物群落&#xff08;生态&#xff09;数据统计分析与绘图 R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂&#xff0c;涉及众多统计分析方法。本课程以生物群落数据分析中的最常用的统计方法回归和混…...

浙江首场千人大会现场爆满!实在智能九哥专题演讲:企业数字化转型,从实在RPA开始!

为帮助众多电商商家探索数字时代下新赛道、新趋势、新方向&#xff0c;制定有目标、有节奏的全年生意规划&#xff0c;“未来电商高峰论坛暨电商生态赋能大会”于3月4日在杭州正式拉开序幕。本次大会旨在向品牌电商企业主、运营操盘手分享数字电商时代的黄金趋势及运营策略&…...

Windows 上 执行docker pull命令 提示:The system cannot find the file specified.

错误提示error during connect: This error may indicate that the docker daemon is not running.: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/version": open //./pipe/docker_engine: The system cannot find the file specified.解决办法在cmd 窗口中执…...

查看 WiFi 密码的两种方法

查看 WiFi 密码的两种方法1. 概述2. 在控制面板中查看 WiFi 密码3. 使用 CMD 查看 WiFi 密码结束语1. 概述 突然忘记 WiFi 密码怎么办&#xff1f; 想连上某个使用过的 WiFi&#xff0c;但有不知道 WiFi 密码怎么办&#xff1f; 使用电脑如何查询 WiFi 密码&#xff1f; 以下是…...

逻辑优化基础-bi-decomposition

简介 bi-decomposition是逻辑综合中用于简化布尔函数的一种技术。其思想是将函数分成两个较小的函数&#xff0c;每个函数仅取决于所选变量的一个值。这些较小的函数可以使用简单的逻辑门&#xff08;如AND、OR和NOT门&#xff09;来实现&#xff0c;然后组合以获得原始函数的…...

Modbus转profinet网关连接1200PLC在博图组态与驱动器通讯程序案例

本案例给大家介绍由兴达易控modbus转profinet网关连接1200PLC在博图软件无需编程&#xff0c;实现1200Profinet转modbus与驱动器通讯的程序案例 硬件连接&#xff1a;1200PLC一台&#xff1b;英威腾DA180系列驱动器一台&#xff1b;兴达易控modbus转profinet网关一台 下面就是…...

Android ART虚拟机 启动和初始化

前言 之前整理了一系列Dalvik虚拟机的关于堆内存和GC的文章&#xff0c;轮到对ART内存进行分析优化了&#xff0c;继续整理输出一波&#xff0c;本篇为ART虚拟机系列的第一篇&#xff0c;介绍ART虚拟机的启动和初始化。 #mermaid-svg-8iNdLFTpOHLgRjHA {font-family:"tre…...

宇视科技一二三面

一面 1、自我介绍 2、堆和栈的区别&#xff0c;堆在数据结构中是如何表示的 3、有用过Linux吗&#xff1f;虚拟空间中用户态是3G&#xff0c;假如计算机的内存是4G&#xff0c;为什么计算机可以运行这些进程 4、虚拟地址到物理地址的映射过程 5、进程间的通信方式 6、共享内存…...

优思学院|盘点,精益生产25个工具!【必需收藏】

精益生产方法需要一种全面的方法才能有效实施。精益这个概念是每个接触产品供应链的人都要实践的&#xff0c;无论是在计划方面还是在分析方面。 精益生产工具有助于持续改进生产效率和产品或服务质量。精益工具是要减少 Muda &#xff08;浪费&#xff09;&#xff0c;从生产过…...

Linux中将多块新硬盘合并成一个,挂载到/mysqldata目录下

需求&#xff1a; 将两块空硬盘合并为“一块”&#xff0c;挂载到指定目录&#xff08;/data&#xff09;下&#xff0c;达到在一个目录使用2块硬盘所有空间的效果。 使用 fdisk -l 命令查看当前系统中的硬盘&#xff0c;如下图&#xff1a; 系统中存在两块未分配的硬盘&#…...

Git的SSH密钥配置

Git的SSH密钥配置简记Githttps和ssh的区别基本需求SSH密钥类型ED25519 SSH 密钥RSA SSH 密钥查看您是否有现有的 SSH 密钥对设置流程设置user name和emailssh密钥配置检查是否存在ssh Key创建新的ssh key将ssh密钥添加到您的Git帐户验证您是否可以连接使用Git有一段时间了&…...

C++回顾(九)——多继承

9.1 多继承 9.1.1 概念 一个类有多个直接基类的继承关系称为多继承&#xff08;多个父类&#xff09;多继承声明语法 class 派生类名 : 访问控制 基类名1 , 访问控制 基类名2 , … , 访问控制 基类名n {数据成员和成员函数声明 }&#xff1b;类 C 可以根据访问控制同时…...

交流约瑟夫森效应

定理 根据约瑟夫森效应的基本方程&#xff0c;当隧道结两端施加恒定电压V0V_0V0​时&#xff0c;结两边超导体波函数的位相差为 Δϕ2eℏV0tΔϕ0\begin{align} \Delta\phi\frac{2e}{\hbar}V_0t\Delta\phi_0 \end{align} Δϕℏ2e​V0​tΔϕ0​​​ 得到超导电流密度为 JsJcs…...

大数据项目实战之数据仓库:用户行为采集平台——第3章 用户行为日志

第3章 用户行为日志 3.1 用户行为日志概述 用户行为日志的内容&#xff0c;主要包括用户的各项行为信息以及行为所处的环境信息。收集这些信息的主要目的是优化产品和为各项分析统计指标提供数据支撑。收集这些信息的手段通常为埋点。 目前主流的埋点方式&#xff0c;有代码…...

centos6下为Rstudio安装多版本R

之前的R版本太旧,不少包装不上,需要安装新版本的R: R --version R version 3.6.0 (2019-04-26) -- "Planting of a Tree"于是下载最新版R: 因为没有证书,需要加上最后面的参数. wget https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/R-4/R-4.2.2.tar.gz --no…...

TCL 拥抱云原生,实现 IT 成本治理优化

作者&#xff1a;行疾 TCL 工程师团队基于阿里云企业云原生 IT 成本治理方案沉淀了一套成熟的 IT 企业成本治理流程与系统&#xff0c;通过阿里云容器服务提供的开箱即用的成本洞察、资源智能画像等功能&#xff0c;进行业务成本拆分、闲置资源可视化发现&#xff0c;并制定弹性…...

什么是API接口

API接口是指应用程序接口&#xff0c;是一种让不同的应用程序之间进行数据交互的方式。在现代软件开发中&#xff0c;API接口已经成为了必不可少的一部分。它们让开发者们可以将不同的功能组合在一起&#xff0c;同时也让不同的应用程序之间可以相互连接和通讯。API接口的作用A…...

基于单片机的波形发生器设计

单片机可以用来设计各种类型的波形发生器&#xff0c;下面是一种基于单片机的波形发生器设计方案。所需材料&#xff1a;单片机&#xff1a;可以选择常见的Atmel AVR单片机&#xff0c;如ATmega328P等。调制器&#xff1a;可以使用AD9833或AD9851等常用的调制器。时钟&#xff…...

微信公众号怎么创建内容/什么是优化师

Q&#xff1a;Mongodb数据服务有什么用&#xff1f; A&#xff1a;首先&#xff0c;Mongodb适合保存大量的非业务数据&#xff0c;因此&#xff0c;Adhesive框架提倡把不是非常重要的非业务数据&#xff08;比如应用程序信息中心的日志、异常、状态数据&#xff0c;又比如WCF扩…...

wordpress qq 微博/电销系统软件排名

接上一篇博客&#xff1a; 准备工作&#xff1a; 测试网络环境是否有问题创建一个普通用户&#xff08;AzF&#xff09;&#xff0c;后期的操作都是基于该用户&#xff0c;在该用户的家目录下创建一个 bin 目录&#xff08;方便后期几个脚本的使用&#xff09;在 /opt/ 下创建…...

做品牌网站哪个好用/深圳百度seo培训

1、Windows平台 在windows命令行窗口下执行&#xff1a; C:/>netstat -ano 我们可以知道某一端口被那个进程&#xff08;对应PID&#xff09;占用&#xff1b; 然后我们可以打开任务管理器&#xff1b;查看某一PID对应的进程名&#xff1b; 如果PID没有显示&#xff0c;菜单…...

wordpress 主题大全/百度seo优化

随着自媒体越来越火爆&#xff0c;入驻自媒体平台得以用户越来越多&#xff0c;几乎每一个人手里都有一个自媒体账号。相信不管是做短视频还是写文章&#xff0c;都是想从自媒体平台获取一份收益。 但是&#xff0c;很多小伙伴做的还不错&#xff0c;月收入几万、十几万&#…...

做数学题的网站有吗/seo排名点击首页

在家目录(root 用户为 /root;其它用户为 /home/userName/)下可以找到一个 .vimrc 的文件 打开此文件输入 set ts4 set expandtab 保存并退出&#xff0c;重启 vim 可以看到&#xff0c;原来的 tab 已经变成了四个空格。 对于已经打开的文件&#xff0c;可以用以下方法&…...

网站找百度做可以嘛/西安百度快照优化

博主闭关两个多月&#xff0c;查阅了数百万字的大数据资料&#xff0c;结合自身的学习和工作经历&#xff0c;总结了大厂高频面试题&#xff0c;里面涵盖几乎所有我见到的大数据面试题目。 《大厂高频面试题系列》目前已总结4篇文章&#xff0c;且在持续更新中✍。文中用最直白…...