文章目录

  • 1.Hive概述
    • (1)数仓工具Hive的产生背景
    • (2)数仓工具Hive与RDBMS对比
    • (3)数仓工具Hive的优缺点
    • (4)数仓工具Hive的架构原理
  • 2.Hive安装与配置
    • (1)安装准备
    • (2)安装MySQL元数据库
    • (3)Hive的安装与配置
    • (4)Hive安装的注意事项
    • (5)参数配置
  • 3.数据类型与文件格式
    • (1)基本数据类型及转换
    • (2)集合数据类型
    • (3)Hive文本文件数据编码及读时模式

1.Hive概述

(1)数仓工具Hive的产生背景

前面已经详细讲解了Hadoop框架的三大核心:

  • HDFS => 海量数据的存储

  • MapReduce => 海量数据的分析和处理

  • Yarn => 集群资源的管理和作业调度

可以说,在面对海量数据时,已经有了一个相对完整的解决方案。

但是直接使用MapReduce处理大数据,存在以下问题:

  • MapReduce开发难度大,学习成本高

  • HDFS文件没有字段名、没有数据类型,不方便对数据进行有效的管理

  • 使用MapReduce框架开发,项目周期长、成本高

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件 映射为一张表(类似于RDBMS中的表),并提供类SQL查询功能;Hive是由Facebook开源,用于解决海量结构化日志的数据统计。

Hive本质是将SQL转换为MapReduce的任务进行运算;

底层仍由HDFS来提供数据存储;

可以将Hive理解为一个将SQL转换为MapReduce任务的工具。

数据仓库(Data Warehouse)由数据仓库之父比尔·恩门于1991年提出,是一个面向主题的、集成的、相对稳定的、反映历史变化的 数据集合。

数据仓库的目的:

构建面向分析的、集成的数据集合;

为企业提供决策支持。

数据仓库本身不产生数据,数据来源于外部;

数仓存储了大量数据,对这些数据的分析和处理不可避免地用到Hive。

(2)数仓工具Hive与RDBMS对比

由于Hive采用了类似SQL的查询语言HQL(Hive Query Language),因此很容易将Hive理解为数据库。其实从结构上来看,Hive和传统的关系数据库除了拥有类似的查询语言,再无类似之处。

两者的对比如下:

  • 查询语言相似(同)

    HQL与SQL高度相似。

    由于SQL被广泛的应用在数据仓库中,因此,专门针对Hive的特性设计了类SQL的查询语言HQL。熟悉SQL开发的开发者可以很方便的使用Hive进行开发。

  • 数据规模(异)

    Hive存储海量数据;RDBMS只能处理有限的数据集。

    由于Hive建立在集群上并可以利用MapReduce进行并行计算,因此可以支持很大规模的数据。

    而RDBMS可以支持的数据规模较小。

  • 执行引擎(异)

    Hive的引擎是MR/Tez/Spark/Flink;RDBMS使用自己的执行引擎。

    Hive中大多数查询的执行是通过Hadoop提供的MapReduce来实现的。

    而RDBMS通常有自己的执行引擎。

  • 数据存储(异)

    Hive保存在HDFS上;RDBMS保存在本地文件系统或裸设备。
    

    Hive的数据都是存储在HDFS中的。

    而RDBMS是将数据保存在本地文件系统或裸设备中。

  • 执行速度(异)

    Hive相对慢(MR/数据量);RDBMS相对快。

    Hive存储的数据量大,在查询数据的时候,通常没有索引,需要扫描整个表;加之Hive使用MapReduce作为执行引擎,这些因素都会导致较高的延迟。

    而RDBMS对数据的访问通常是基于索引的,执行延迟较低。当然这个低是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,Hive的并行计算显然能体现出并行的优势。

  • 可扩展性(异)

    Hive支持水平扩展;通常RDBMS支持垂直扩展,对水平扩展不友好。
    

    Hive建立在Hadoop之上,其可扩展性与Hadoop的可扩展性是一致的(Hadoop集群规模可以轻松超过1000个节点)。

    而RDBMS由于ACID语义的严格限制,扩展行非常有限。目前最先进的并行数据库Oracle在理论上的扩展能力也只有100台左右。

  • 数据更新(异)

    Hive对数据更新不友好;RDBMS支持频繁、快速数据更新。
    

    Hive是针对数据仓库应用设计的,数据仓库的内容是读多写少的。因此,Hive中不建议对数据的改写,所有的数据都是在加载的时候确定好的。

    而RDBMS中的数据需要频繁、快速地进行更新。

(3)数仓工具Hive的优缺点

Hive的优点如下:

  • 学习成本低

    Hive提供了类似SQL的查询语言,开发人员能快速上手。

  • 处理海量数据

    底层执行的是MapReduce任务。

  • 系统可以水平扩展

    底层基于Hadoop。

  • 功能可以扩展

    Hive允许用户自定义函数。

  • 良好的容错性

    某个节点发生故障,HQL仍然可以正常完成。

  • 统一的元数据管理

    元数据包括有哪些表、表有什么字段、字段是什么类型等内容。

Hive的缺点如下:

  • HQL表达能力有限

  • 迭代计算无法表达

  • Hive的执行效率不高(基于MR的执行引擎)

  • Hive自动生成的MapReduce作业,某些情况下不够智能

  • Hive的调优困难

(4)数仓工具Hive的架构原理

Hive的架构图如下:

在这里插入图片描述

其中:

  1. 用户接口有3种:

    - CLI(Common Line Interface):Hive的命令行,用于接收HQL,并返回结果;

    - JDBC/ODBC:是指Hive的java实现,与传统数据库JDBC类似;

    - WebUI:是指可通过浏览器访问Hive。

  1. Thrift Server

    Hive可选组件,是一个软件框架服务,允许客户端使用包括Java、C++、Ruby和其他很多种语言,通过编程的方式远程访问Hive。

  1. 元数据管理(MetaStore)

    Hive将元数据存储在关系数据库中(如MySQL、derby);

    Hive的元数据包括:数据库名、表名及类型、字段名称及数据类型、数据所在位置等。

  1. 驱动程序(Driver)

    - 解析器(SQLParser)

        使用第三方工具(antlr)将HQL字符串转换成抽象语法树(AST);对AST进行语法分析,比如字段是否存在、SQL语义是否有误、表是否存在。

    - 编译器(Compiler)

        将抽象语法树编译生成逻辑执行计划。

    - 优化器(Optimizer)

        对逻辑执行计划进行优化,减少不必要的列、使用分区等。

    - 执行器(Executor)

        把逻辑执行计划转换成可以运行的物理计划。

2.Hive安装与配置

(1)安装准备

与Hive相关的3个网站如下:

Hive官网:http://hive.apache.org;
下载网址:http://archive.apache.org/dist/hive/;
文档网址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual。

安装Hive的前提:

准备好3台虚拟机,同时安装Hadoop,前面的阶段已经完成该工作。

需要安装的软件包括Hive 2.3.7MySQL 5.7 (可以选择5.7.26或5.7.35)。

这里之所以需要安装MySQL,是因为:

Hive的元数据默认存储在自带的 derby 数据库中;

derby是Java语言开发的占用资源少,但是只支持单进程、单用户,仅仅适用于个人的测试;

生产中多采用MySQL。

各个节点安装软件的分布如下:

软件node01node02node03
Hadoop
MySQL
Hive

需要准备的安装包包括:

  • Hive安装包

    可点击http://archive.apache.org/dist/hive/hive-2.3.7/apache-hive-2.3.7-bin.tar.gz下载。

  • MySQL安装包

    可点击https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar下载。

  • MySQL的JDBC驱动程序

    可点击https://cdn.mysql.com/archives/mysql-connector-java-5.1/mysql-connector-java-5.1.46.tar.gz下载。

这些安装包可以在本地下载再通过工具上传到虚拟机中,也可以在虚拟机上通过wget命令进行下载。

(2)安装MySQL元数据库

MySQL的安装步骤一般如下:

  1. 环境准备

    1. 删除有冲突的依赖包

    2. 安装必须的依赖包

  1. 安装MySQL

  2. 在数据库中创建hive用户

因为前2步已经在2.6 Linux服务器中执行过,因此可以省略,直接创建hive用户。

为了在开发阶段密码便于记忆和使用,在创建用户时可以设置较简单的密码,此时就需要在创建用户前修改密码验证策略和长度,如下:

mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)mysql> set global validate_password_length=4;
Query OK, 0 rows affected (0.00 sec)

其中,validate_password_policy 表示密码密码策略,可配置的值如下:

  • 0 or LOW

    仅需需符合密码长度,由参数validate_password_length指定,默认为8。

  • 1 or MEDIUM

    满足LOW策略,同时还需满足至少有1个数字、小写字母、大写字母和特殊字符。

  • 2 or STRONG

    满足MEDIUM策略,同时密码不能存在字典文件(dictionary file)中。

说明:

个人开发环境,出于方便的目的可以设置比较简单的密码;生产环境一定要设置复杂密码

再创建hive用户,如下:

-- 创建用户设置密码
mysql> create user 'hive'@'%' identified by 'hive';
Query OK, 0 rows affected (0.02 sec)
-- 授权
mysql> grant all on *.* to 'hive'@'%';
Query OK, 0 rows affected (0.00 sec)
-- 刷新
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

再退出MySQL使用hive用户登录验证,如下:

[root@node03 ~]$ mysql -u hive -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.7.35 MySQL Community Server (GPL)Copyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| java_demo          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)mysql> 

可以看到,成功登录并进行了查看。

(3)Hive的安装与配置

安装和配置Hive的步骤如下:

(1)下载Hive软件,并解压缩

[root@node03 ~]$ cd /opt/packages/
[root@node03 packages]$ tar -xzvf apache-hive-2.3.7-bin.tar.gz -C ../software/
apache-hive-2.3.7-bin/LICENSE
apache-hive-2.3.7-bin/RELEASE_NOTES.txt
apache-hive-2.3.7-bin/NOTICE
apache-hive-2.3.7-bin/binary-package-licenses/com.thoughtworks.paranamer-LICENSE
apache-hive-2.3.7-bin/binary-package-licenses/org.codehaus.janino-LICENSE
...
apache-hive-2.3.7-bin/hcatalog/share/webhcat/svr/lib/wadl-resourcedoc-doclet-1.4.jar
apache-hive-2.3.7-bin/hcatalog/share/webhcat/svr/lib/commons-exec-1.1.jar
apache-hive-2.3.7-bin/hcatalog/share/webhcat/svr/lib/jetty-all-server-7.6.0.v20120127.jar
apache-hive-2.3.7-bin/hcatalog/share/webhcat/svr/lib/jul-to-slf4j-1.7.10.jar
apache-hive-2.3.7-bin/hcatalog/share/webhcat/java-client/hive-webhcat-java-client-2.3.7.jar
[root@node03 packages]$ cd ../software/
[root@node03 software]$ mv apache-hive-2.3.7-bin/ hive-2.3.7/
[root@node03 software]$ ls
hadoop-2.9.2  hive-2.3.7  java  tomcat
[root@node03 software]$ cd hive-2.3.7/
[root@node03 hive-2.3.7]$ pwd
/opt/software/hive-2.3.7

可以看到,最后得到了Hive的安装路径。

(2)修改环境变量

编辑/etc/profile文件vim /etc/profile,添加如下内容:

# HIVE_HOME
export HIVE_HOME=/opt/software/hive-2.3.7
export PATH=$PATH:$HIVE_HOME/bin

保存退出后,执行source /etc/profile使环境变量生效,如下:

[root@node03 hive-2.3.7]$ source /etc/profile
[root@node03 hive-2.3.7]$ hive --version
Hive 2.3.7
Git git://Alans-MacBook-Air.local/Users/gates/git/hive -r xxxxxd88304034393d68cc31a95be24f5aaxxxxx
Compiled by gates on Tue Apr 7 12:42:45 PDT 2020
From source with checksum xxxxxe8ac4737126b00a1a47f66xxxxx

可以看到,环境变量配置生效,获取到了Hive的版本信息。

(3)修改 Hive 配置

进入Hive安装目录下的conf目录:

[root@node03 hive-2.3.7]$ cd conf/
[root@node03 conf]$ ls
beeline-log4j2.properties.template    ivysettings.xml
hive-default.xml.template             llap-cli-log4j2.properties.template
hive-env.sh.template                  llap-daemon-log4j2.properties.template
hive-exec-log4j2.properties.template  parquet-logging.properties
hive-log4j2.properties.template

并创建文件hive-site.xml,添加内容如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><!-- hive元数据的存储位置 --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://node03:3306/hivemetadata?createDatabaseIfNotExist=true&amp;useSSL=false</value><description>JDBC connect string for a JDBC metastore</description></property><!-- 指定驱动程序 --><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description></property><!-- 连接数据库的用户名 --><property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value><description>username to use against metastore database</description></property><!-- 连接数据库的口令 --><property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value><description>password to use against metastore database</description></property>
</configuration>

退出并保存;

先通过javax.jdo.option.ConnectionURL参数指定了Hive元数据保存的数据库的位置和数据库,如果不存在则创建,同时指定连接时不加密,如果没有useSSL=false会有大量警告, &amp;表示连接符&

再通过javax.jdo.option.ConnectionDriverName参数指定驱动程序;

同时指定登录到MySQL的用户名和密码。

(4)准备MySQL的JDBC驱动程序

将MySQL的驱动程序移动到Hvie安装目录下的lib目录下,如下:

[root@node03 conf]$ cd ..
[root@node03 hive-2.3.7]$ pwd
/opt/software/hive-2.3.7
[root@node03 hive-2.3.7]$ mv ../../packages/mysql-connector-java-5.1.46.jar lib/
[root@node03 hive-2.3.7]$ ls lib/ | grep mysql
mysql-connector-java-5.1.46.jar
mysql-metadata-storage-0.9.2.jar

(5)初始化元数据库

执行schematool -dbType mysql -initSchema命令初始化源数据库,其中-dbType选项用于指定数据库,这里即MySQL,-initSchema用于指定执行的操作为初始化Schema。

如下:

[root@node03 hive-2.3.7]$ cd bin/
[root@node03 bin]$ ls
beeline  ext  hive  hive-config.sh  hiveserver2  hplsql  metatool  schematool
[root@node03 bin]$ schematool -dbType mysql -initSchema
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/software/hive-2.3.7/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/software/hadoop-2.9.2/share/hadoop/common/lib/slf4j-log4j12-1.7.25.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.apache.logging.slf4j.Log4jLoggerFactory]
Metastore connection URL:        jdbc:mysql://node03:3306/hivemetadata?createDatabaseIfNotExist=true&useSSL=false
Metastore Connection Driver :    com.mysql.jdbc.Driver
Metastore connection User:       hive
Starting metastore schema initialization to 2.3.0
Initialization script hive-schema-2.3.0.mysql.sql
Initialization script completed
schemaTool completed

修改完成后,查看数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hivemetadata       |
| java_demo          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.01 sec)mysql> use hivemetadata;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> show tables;
+---------------------------+
| Tables_in_hivemetadata    |
+---------------------------+
| AUX_TABLE                 |
| BUCKETING_COLS            |
| CDS                       |
| COLUMNS_V2                |
| COMPACTION_QUEUE          |
| COMPLETED_COMPACTIONS     |
| COMPLETED_TXN_COMPONENTS  |
| DATABASE_PARAMS           |
| DBS                       |
| DB_PRIVS                  |
| DELEGATION_TOKENS         |
| FUNCS                     |
| FUNC_RU                   |
| GLOBAL_PRIVS              |
| HIVE_LOCKS                |
| IDXS                      |
| INDEX_PARAMS              |
| KEY_CONSTRAINTS           |
| MASTER_KEYS               |
| NEXT_COMPACTION_QUEUE_ID  |
| NEXT_LOCK_ID              |
| NEXT_TXN_ID               |
| NOTIFICATION_LOG          |
| NOTIFICATION_SEQUENCE     |
| NUCLEUS_TABLES            |
| PARTITIONS                |
| PARTITION_EVENTS          |
| PARTITION_KEYS            |
| PARTITION_KEY_VALS        |
| PARTITION_PARAMS          |
| PART_COL_PRIVS            |
| PART_COL_STATS            |
| PART_PRIVS                |
| ROLES                     |
| ROLE_MAP                  |
| SDS                       |
| SD_PARAMS                 |
| SEQUENCE_TABLE            |
| SERDES                    |
| SERDE_PARAMS              |
| SKEWED_COL_NAMES          |
| SKEWED_COL_VALUE_LOC_MAP  |
| SKEWED_STRING_LIST        |
| SKEWED_STRING_LIST_VALUES |
| SKEWED_VALUES             |
| SORT_COLS                 |
| TABLE_PARAMS              |
| TAB_COL_STATS             |
| TBLS                      |
| TBL_COL_PRIVS             |
| TBL_PRIVS                 |
| TXNS                      |
| TXN_COMPONENTS            |
| TYPES                     |
| TYPE_FIELDS               |
| VERSION                   |
| WRITE_SET                 |
+---------------------------+
57 rows in set (0.00 sec)mysql> 

可以看到,在执行初始化元数据库的命令后,创建了hivemetadata数据库,并在数据库中创建了保存元数据所需要的表。

(6)执行命令启动Hive

启动Hive服务之前,请先启动HDFS、Yarn的服务

如果没有启动HDFS,则需要在node01节点执行start-dfs.sh启动HDFS;

如果没有启动Yarn,则需要在node03节点执行start-yarn.sh启动Yarn。

然后等待一段时间,等待HDFS集群度过安全模式的时间(默认为30秒,不能进行操作),再启动Hive。

启动Hive直接使用命令hive即可,如下:

[root@node03 ~]$ hive
which: no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/software/java/jdk1.8.0_231/bin:/opt/software/hadoop-2.9.2/bin:/opt/software/hadoop-2.9.2/sbin:/opt/software/hive-2.3.7/bin:/root/bin)
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/software/hive-2.3.7/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/software/hadoop-2.9.2/share/hadoop/common/lib/slf4j-log4j12-1.7.25.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.apache.logging.slf4j.Log4jLoggerFactory]Logging initialized using configuration in jar:file:/opt/software/hive-2.3.7/lib/hive-common-2.3.7.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive> show databases;
OK
default
Time taken: 6.42 seconds, Fetched: 1 row(s)
hive> create database test1;
OK
Time taken: 0.315 seconds
hive> show databases;
OK
default
test1
Time taken: 0.039 seconds, Fetched: 2 row(s)
hive> use test1;
OK
Time taken: 0.262 seconds
hive> 

可以看到,启动Hive成功,与MySQL命令行类似,同时自带默认数据库default。

(4)Hive安装的注意事项

可在 hive-site.xml 中增加一些常用配置,方便使用,例如设置数据在HDFS中的存储位置、Hive命令行中显示当前库、显示表头信息和本地模式等,在/opt/software/hive-2.3.7/conf目录下编辑hive-site.xml,如下:

<!-- 数据存储位置 -->
<property><!-- 数据默认的存储位置(HDFS) --><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value><description>location of default database for the warehouse</description>
</property>
<!-- 显示当前库 -->
<property><!-- 在命令行中,显示当前操作的数据库 --><name>hive.cli.print.current.db</name><value>true</value><description>Whether to include the current database in the Hive prompt.</description>
</property>
<!-- 显示表头属性 -->
<property><!-- 在命令行中,显示数据的表头 --><name>hive.cli.print.header</name><value>true</value>
</property>
<!-- 本地模式 -->
<property><!-- 操作小规模数据时,使用本地模式,提高效率 --><name>hive.exec.mode.local.auto</name><value>true</value><description>Let Hive determine whether to run in local mode automatically</description>
</property>

其中,本地模式的含义是:当 Hive 的输入数据量非常小时,Hive通过本地模式在单台机器上处理所有的任务。对于小数据集,执行时间会明显被缩短。

当一个job满足如下条件才能真正使用本地模式:

  • job的输入数据量必须小于参数hive.exec.mode.local.auto.inputbytes.max的值(默认是128MB)

  • job的map数必须小于参数hive.exec.mode.local.auto.tasks.max的值(默认是4)

  • job的reduce数必须为0或者1

此时再重新启动Hive,如下:

hive (default)> show databases;
OK
database_name
default
test1
Time taken: 8.184 seconds, Fetched: 2 row(s)
hive (default)> use test1;
OK
Time taken: 0.094 seconds
hive (test1)> 

可以看到,此时显示了正在使用的数据库。

同时从前面可以看到,在启动Hive的时候,会提示Hive和Hadoop中SLF4J(一个日志标准)的版本冲突的问题,此时可以删除Hive中的SLF4J、而保留Hadoop中的版本,此时Hive在启动时就会自动使用Hadoop中的版本,根据提示信息中的路径来删除即可,例如rm -f /opt/software/hive-2.3.7/lib/log4j-slf4j-impl-2.6.2.jar,删除后再重新执行就不会有SLF4J冲突的提示了。

Hive的日志默认存放在/tmp/root目录下(root表示当前用户名),可以查看如下:

[root@node03 ~]$ ll -ht /tmp/root/
总用量 20K
-rw-r--r-- 1 root root 4.8K 921 09:13 hive.log
-rw-r--r-- 1 root root 2.9K 921 09:12 hive.log.2021-09-20
-rw-r--r-- 1 root root 6.3K 920 22:06 stderr

在遇到错误、需要排查时就可以查看这个路径下的hive.log文件。

这个位置是在Hive安装路径下的conf目录下的hive-log4j2.properties.template文件定义的,也可以修改,hive-log4j2.properties.template是一个模板文件,可以cp hive-log4j2.properties.template hive-log4j2.properties新建一个文件,并在hive-log4j2.properties中修改,其中property.hive.log.dir = {sys:java.io.tmpdir}/{sys:user.name},可以根据自己的需要进行修改。

在实际的开发和使用过程中,要对端口号敏感,例如前面启动Hive使如果报错和9000端口相关,说明可能是HDFS未启动或者有异常,因为之前在配置HDFS时,core-site.xml文件中设置的fs.defaultFS值就是hdfs://node01:9000(端口指定9000),如果这里不指定9000,就会使用默认的端口,Hadoop 2.x 中 NameNode RPC缺省的端口号是8020。

在实际的生产过程中,可能需要使用第三方账号,用于保证安全性,因此需要添加第三方用户。

如下:

# 添加组
[root@node03 ~]$ groupdel hadoop
# 添加用户
[root@node03 ~]$ useradd -m hadoop -g hadoop -s /bin/bash
# 设置用户密码
[root@node03 ~]$ passwd hadoop
更改用户 hadoop 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
# 切换用户
[root@node03 ~]$ su hadoop
# 启动Hive
[hadoop@node03 root]$ hive
which: no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/software/java/jdk1.8.0_231/bin:/opt/software/hadoop-2.9.2/bin:/opt/software/hadoop-2.9.2/sbin:/opt/software/hive-2.3.7/bin:/root/bin)Logging initialized using configuration in file:/opt/software/hive-2.3.7/conf/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive (default)> show databases;
OK
database_name
default
test1
Time taken: 7.132 seconds, Fetched: 2 row(s)
hive (default)> exit;

其中,useradd命令的常用选项如下:

选项含义
-m自动建立用户的登入目录
-g指定用户所属的起始群组
-G<群组>指定用户所属的附加群组
-s指定用户登入后所使用的Shell

建议现阶段还是使用root用户即可。

(5)参数配置

Hive中查看参数配置信息的方式如下:

-- 查看全部参数
hive (default)> set;
_hive.hdfs.session.path=/tmp/hive/root/97a4196d-bd8d-4c40-b736-de3061563bf7
_hive.local.session.path=/tmp/root/97a4196d-bd8d-4c40-b736-de3061563bf7
_hive.tmp_table_space=/tmp/hive/root/97a4196d-bd8d-4c40-b736-de3061563bf7/_tmp_space.db
datanode.https.port=50475
datanucleus.cache.level2=false
...
system:user.dir=/root
system:user.home=/root
system:user.language=zh
system:user.name=root
system:user.timezone=Asia/Shanghai
-- 查看某个参数
hive (default)> set hive.exec.mode.local.auto;
hive.exec.mode.local.auto=true
hive (default)> 

参数配置有3种方式,如下:

  • 用户自定义配置文件(hive-site.xml)

  • 启动Hive时指定参数(-hiveconf)

  • Hive命令行指定参数(set)

其中默认配置文件是hive-default.xml,用户自定义配置文件是hive-site.xml,后者优先级大于前者;

配置文件中的设置对本机启动的所有Hive进程有效;

也可以启动Hive时,在命令行添加-hiveconf param=value来设定参数,这些设定仅对本次启动有效;

还可以在 Hive 命令行中使用SET关键字设定参数,同样仅对本次启动有效。

现在使用如下:

[root@node03 ~]$ hive
which: no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/software/java/jdk1.8.0_231/bin:/opt/software/hadoop-2.9.2/bin:/opt/software/hadoop-2.9.2/sbin:/opt/software/hive-2.3.7/bin:/root/bin)Logging initialized using configuration in file:/opt/software/hive-2.3.7/conf/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive (default)> set hive.exec.mode.local.auto;
hive.exec.mode.local.auto=true
hive (default)> exit;
[root@node03 ~]$ hive -hiveconf hive.exec.mode.local.auto=false
which: no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/software/java/jdk1.8.0_231/bin:/opt/software/hadoop-2.9.2/bin:/opt/software/hadoop-2.9.2/sbin:/opt/software/hive-2.3.7/bin:/root/bin)Logging initialized using configuration in file:/opt/software/hive-2.3.7/conf/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive (default)> set hive.exec.mode.local.auto;
hive.exec.mode.local.auto=false
hive (default)> set hive.exec.mode.local.auto=true;
hive (default)> set hive.exec.mode.local.auto;
hive.exec.mode.local.auto=true
hive (default)> 

可以总结,各个配置方式的优先级如下:

set > -hiveconf > hive-site.xml > hive-default.xml

可以查看Hive命令的帮助文档,如下:

[root@node03 ~]$ hive -help
which: no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/software/java/jdk1.8.0_231/bin:/opt/software/hadoop-2.9.2/bin:/opt/software/hadoop-2.9.2/sbin:/opt/software/hive-2.3.7/bin:/root/bin)
usage: hive-d,--define <key=value>          Variable substitution to apply to Hivecommands. e.g. -d A=B or --define A=B--database <databasename>     Specify the database to use-e <quoted-query-string>         SQL from command line-f <filename>                    SQL from files-H,--help                        Print help information--hiveconf <property=value>   Use value for given property--hivevar <key=value>         Variable substitution to apply to Hivecommands. e.g. --hivevar A=B-i <filename>                    Initialization SQL file-S,--silent                      Silent mode in interactive shell-v,--verbose                     Verbose mode (echo executed SQL to theconsole)

其中,-e选项用于不进入Hive交互窗口、直接执行SQL语句,如下:

[root@node03 ~]$ hive -e "show databases;"
which: no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/software/java/jdk1.8.0_231/bin:/opt/software/hadoop-2.9.2/bin:/opt/software/hadoop-2.9.2/sbin:/opt/software/hive-2.3.7/bin:/root/bin)Logging initialized using configuration in file:/opt/software/hive-2.3.7/conf/hive-log4j2.properties Async: true
OK
database_name
default
test1
Time taken: 6.09 seconds, Fetched: 2 row(s)

-f参数用于执行脚本中SQL语句。

先创建文件vim hdfsfile1.sql,内容如下:

show databases;

执行如下:

# 执行文件中的SQL语句
[root@node03 ~]$ hive -f hdfsfile1.sql 
which: no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/software/java/jdk1.8.0_231/bin:/opt/software/hadoop-2.9.2/bin:/opt/software/hadoop-2.9.2/sbin:/opt/software/hive-2.3.7/bin:/root/bin)Logging initialized using configuration in file:/opt/software/hive-2.3.7/conf/hive-log4j2.properties Async: true
OK
database_name
default
test1
Time taken: 5.97 seconds, Fetched: 2 row(s)
# 执行文件中的SQL语句,并将结果写入文件
[root@node03 ~]$ hive -f hdfsfile1.sql >> result.log
which: no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/software/java/jdk1.8.0_231/bin:/opt/software/hadoop-2.9.2/bin:/opt/software/hadoop-2.9.2/sbin:/opt/software/hive-2.3.7/bin:/root/bin)Logging initialized using configuration in file:/opt/software/hive-2.3.7/conf/hive-log4j2.properties Async: true
OK
Time taken: 7.183 seconds, Fetched: 2 row(s)
[root@node03 ~]$ cat result.log 
database_name
default
test1

和MySQL类似,退出Hive命令行可以使用exit;或者quit;命令。

还可以在命令行执行Shell命令和HDFS命令如下:

# 操作节点本地
hive (default)> ! ls;
111
123abc
aaa
abc.txt
anaconda-ks.cfg
bbb
cba.txt
hdfsfile1.sql
lxDemo
result.log
# 操作HDFS
hive (default)> dfs -ls /;
Found 13 items
drwxrwxrwx   - root supergroup          0 2021-09-01 17:59 /api_test
drwxrwxrwx   - root supergroup          0 2021-08-26 19:22 /cl
drwxr-xr-x   - root supergroup          0 2021-09-06 10:14 /collect_log
drwxr-xr-x   - root supergroup          0 2021-09-02 18:37 /demo
drwxr-xr-x   - root supergroup          0 2021-09-02 18:29 /output
-rw-r--r--   1 root supergroup     281214 2021-09-02 12:43 /packet.txt
drwxr-xr-x   - root supergroup          0 2021-09-02 18:14 /test
drwxrwxrwx   - root supergroup          0 2021-09-20 15:33 /tmp
-rw-r--r--   1 root supergroup         18 2021-09-02 11:12 /tmp.txt
drwxrwxrwx   - root supergroup          0 2021-09-21 11:08 /user
drwxr-xr-x   - root supergroup          0 2021-09-04 11:00 /wc_output
drwxrwxrwx   - root supergroup          0 2021-08-25 22:33 /wcinput
drwxrwxrwx   - root supergroup          0 2021-09-07 18:52 /wcoutput
hive (default)> dfs -ls /user;
Found 2 items
drwxrwxrwx   - root supergroup          0 2021-09-20 18:52 /user/hive
drwxrwxrwx   - root supergroup          0 2021-09-02 22:01 /user/root
hive (default)> 

3.数据类型与文件格式

Hive支持关系型数据库的绝大多数基本数据类型,同时也支持4种集合数据类型。

(1)基本数据类型及转换

Hive类似和Java语言中一样,会支持多种不同长度的整型和浮点类型数据,同时也支持布尔类型、字符串类型,时间戳数据类型以及二进制数组数据类型等。具体如下:

  • Integers(整型)

    - TINYINT—1字节的有符号整数

    - SMALLINT—2字节的有符号整数
    

    - INT—4字节的有符号整数
    

    - BIGINT—8字节的有符号整数
    

  • Floating point numbers(浮点数)

    - FLOAT—单精度浮点数

    - DOUBLE—双精度浮点数
    

  • Fixed point numbers(定点数)

    - DECIMAL—17字节,任意精度数字。通常用户自定
    义decimal(12, 6)
    

  • String(字符串)

    - STRING—可指定字符集的不定长字符串
    

    - VARCHAR—1-65535长度的不定长字符串
    

    - CHAR—1-255定长字符串
    

  • Datetime(时间日期类型)

    - TIMESTAMP—时间戳(纳秒精度)
    

    - DATE—时间日期类型
    

  • Boolean(布尔类型)

    - BOOLEAN—TRUE / FALSE
    

  • Binary types(二进制类型)

    - BINARY—字节序列

这些类型名称都是 Hive 中保留字。

这些基本的数据类型都是 Java 中的接口进行实现的,因此与 java 中数据类型是基本一致的,具体如下:

Hive数据类型Java数据类型长度样例
TINYINTbyte1字节有符号整数20
SMALLINTshort2字节有符号整数30
INTint4字节有符号整数40
BIGINTlong8字节有符号整数50
BOOLEANboolean布尔类型true、false
FLOATfloat单精度浮点数3.14159
DOUBLEdouble双精度浮点型2.71828
STRINGString字符序列,可指定字符集;可以使用单引号或双引号‘The Apache Hive data warehouse software facilitates’
TIMESTAMP时间类型
BINARY字符数组

Hive的数据类型是可以进行隐式转换 的,类似于Java的类型转换。如用户在查询中将一种浮点类型和另一种浮点类型的值做对比,Hive会将类型转换成两个浮点类型中值较大的那个类型,即:将FLOAT类型转换成DOUBLE类型;当然如果需要的话,任意整型会转化成DOUBLE类型。 Hive 中基本数据类型遵循以下层次结构:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IpLZRV5C-1636255026508)(image/image_1.png)]

按照这个层次结构,子类型到祖先类型允许隐式转换。

总的来说数据转换遵循以下规律:

任何整数类型都可以隐式转换为一个范围更广的类型,例如tinyInt => Int、int => bigint;

所有整数类型、float、string(都是数字)都可以隐式转换为Double;
tinyint、 smallint、int => float;
boolean不能转换。

使用如下:

hive (default)> select "1.0" + 2;
OK
_c0
3.0
Time taken: 1.69 seconds, Fetched: 1 row(s)
hive (default)> select "111" > 112;
OK
_c0
false
Time taken: 0.199 seconds, Fetched: 1 row(s)
hive (default)> select "111" > 110;
OK
_c0
true
Time taken: 0.089 seconds, Fetched: 1 row(s)
hive (default)> select "1" > true;
OK
_c0
false
Time taken: 0.142 seconds, Fetched: 1 row(s)
hive (default)> select "1" + true;
FAILED: SemanticException [Error 10014]: Line 1:7 Wrong arguments 'true': No matching method for class org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNumericPlus with (string, boolean)

使用cast函数进行强制类型转换 ;如果强制类型转换失败,返回NULL。

使用如下:

hive (default)> select cast('111a' as int);
OK
_c0
NULL
Time taken: 0.119 seconds, Fetched: 1 row(s)
hive (default)> select cast('111' as int);
OK
_c0
111
Time taken: 0.177 seconds, Fetched: 1 row(s)
hive (default)> 

(2)集合数据类型

Hive支持集合数据类型,包括array、map、struct、union等类型,分别如下:

类型含义字面量示意
ARRAY有序的相同数据类型的集合array(1,2)
MAPkey-value对,其中key必须是基本数据类型、value不限map(‘a’, 1, ‘b’,2)
STRUCT不同类型字段的集合,类似于C语言的结构体struct(‘1’,1,1.0);
named_struct(‘col1’, ‘1’, ‘col2’, 1, ‘clo3’, 1.0)
UNION不同类型的元素存储在同一字段的不同行中create_union(1, ‘a’, 63)

和基本数据类型一样,这些类型的名称同样是保留字;

ARRAY 和 MAP 与 Java 中的 Array 和 Map 类似;

STRUCT 与 C 语言中的 Struct 类似,它封装了一个命名字段集合,复杂数据类型允许任意层次的嵌套。

使用如下:

-- array
hive (default)> select array(1, 2, 3, 4, 5) as myarr;
OK
myarr
[1,2,3,4,5]
Time taken: 6.692 seconds, Fetched: 1 row(s)
hive (default)> select myarr from (select array(1, 2, 3, 4, 5) as myarr) tmp;
OK
myarr
[1,2,3,4,5]
Time taken: 0.128 seconds, Fetched: 1 row(s)
hive (default)> select myarr[0] from (select array(1, 2, 3, 4, 5) as myarr) tmp;
OK
_c0
1
Time taken: 0.112 seconds, Fetched: 1 row(s)
hive (default)> select myarr[4] from (select array(1, 2, 3, 4, 5) as myarr) tmp;
OK
_c0
5
Time taken: 0.137 seconds, Fetched: 1 row(s)
hive (default)> select myarr[5] from (select array(1, 2, 3, 4, 5) as myarr) tmp;
OK
_c0
NULL
Time taken: 0.113 seconds, Fetched: 1 row(s)
-- map
hive (default)> select map("a", 10, "b", 20, "c", 30, "d", 40, "e", 50) mymap;
OK
mymap
{"a":10,"b":20,"c":30,"d":40,"e":50}
Time taken: 0.12 seconds, Fetched: 1 row(s)
hive (default)> select mymap["a"] from (select map("a", 10, "b", 20, "c", 30, "d", 40, "e", 50) mymap) tmp;
OK
_c0
10
Time taken: 0.126 seconds, Fetched: 1 row(s)
hive (default)> select mymap["e"] from (select map("a", 10, "b", 20, "c", 30, "d", 40, "e", 50) mymap) tmp;
OK
_c0
50
Time taken: 0.116 seconds, Fetched: 1 row(s)
hive (default)> select mymap["f"] from (select map("a", 10, "b", 20, "c", 30, "d", 40, "e", 50) mymap) tmp;
OK
_c0
NULL
Time taken: 0.1 seconds, Fetched: 1 row(s)
-- struct
hive (default)> select struct("Corley", 18, 190) as userinfo;
OK
userinfo
{"col1":"Corley","col2":18,"col3":190}
Time taken: 0.082 seconds, Fetched: 1 row(s)
hive (default)> select named_struct("name", "Jack", "age", 30, "height", 170) as userinfo2;
OK
userinfo2
{"name":"Jack","age":30,"height":170}
Time taken: 0.125 seconds, Fetched: 1 row(s)
hive (default)> select userinfo2.name, userinfo2.age, userinfo2.height from (select named_struct("name", "Jack", "age", 30, "height", 170) as userinfo2) t1;
OK
name    age     height
Jack    30      170
Time taken: 0.111 seconds, Fetched: 1 row(s)
-- union
hive (default)> select create_union(0, "Corley", 18, 20900) as myunion;
OK
myunion
{0:"Corley"}
Time taken: 0.509 seconds, Fetched: 1 row(s)
hive (default)> select myunion from (select create_union(0, "Corley", 18, 20900) as myunion) tmp; 
OK
myunion
{0:"Corley"}
Time taken: 0.095 seconds, Fetched: 1 row(s)
hive (default)> 

其中,array和map通过中括号[]访问元素,struct通过列名.字段名访问具体信息;

如果要访问的元素不存在时,返回NULL,而不会报错。

(3)Hive文本文件数据编码及读时模式

Hive表中的数据在存储在文件系统上,Hive定义了默认的存储格式,也支持用户自定义文件存储格式。

Hive默认使用几个很少出现在字段值中的控制字符,来表示替换默认分隔符的字符。Hive默认分隔符及其含义如下:

分隔符名称含义
\n换行符用于分隔行:每一行是一条记录,使用换行符分割数据
^A+A用于分隔字段:在CREATE TABLE语句中使用八进制编码\001表示
^B+B用于分隔 ARRAY、MAP、STRUCT 中的元素:在CREATE TABLE语句中使用八进制编码\002表示
^C+CMap中 key、value之间的分隔符:在CREATE TABLE语句中使用八进制编码\003表示

先举例如下:

有一个表的字段如下:

id   name    age hobby(array) score(map)

先创建表:

create table s1(id int,name string,age int,hobby array<string>,score map<string, int>
);

再在本地的/home/hadoop/data目录(不存在则先创建)下创建数据文件vi s1.dat,输入s1表的数据,内容如下:

666^ACorley^A18^Aread^Bmusic^Ajava^C97^Bhadoop^C87
777^AJack^A30^Aread^Bgame^Amath^C73^^Bpython^C67

在 vi 中输入特殊字符即分隔符时,不能直接输入^,而是需要使用快捷键,3个分隔符的快捷键如下:

(Ctrl + v) + (Ctrl + a) => ^A
(Ctrl + v) + (Ctrl + b) => ^B
(Ctrl + v) + (Ctrl + c) => ^C

需要注意,在输入分隔符的时候需要确保快捷键Ctrl+v没有被占用。

同时,^A^B^C 都是特殊的控制字符,直接使用more、cat命令是看不见的,可以使用cat -A s1.dat进行查看,如下:

[root@node03 data]$ cat -A s1.dat 
666^ACorley^A18^Aread^Bmusic^Ajava^C97^Bhadoop^C87$
777^AJack^A30^Aread^Bgame^Amath^C73^^Bpython^C67$

再加载本地数据和查询,如下所示:

hive (default)> load data local inpath '/home/hadoop/data/s1.dat' into table s1;
Loading data to table default.s1
OK
Time taken: 0.681 seconds
hive (default)> select * from s1;
OK
s1.id   s1.name s1.age  s1.hobby        s1.score
666     Corley  18      ["read","music"]        {"java":97,"hadoop":87}
777     Jack    30      ["read","game"] {"math":null,"python":67}
Time taken: 1.924 seconds, Fetched: 2 row(s)
hive (default)> 

可以看到,导入和查询出了数据。

默认的分隔符因为使用极少,在数据中一般不会出现,所以不会干扰数据的分割;

当然,一般情况下不会采用默认的分隔符,因为可读性太差,同时输入也比较麻烦;

Hive 中没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性,即列分隔符(通常为空格、"\t"、"\x001")、行分隔符("\n")以及读取文件数据的方法;

在加载数据的过程中,Hive 不会对数据本身进行任何修改,而只是将数据内容复制或者移动到相应的 HDFS 目录中;

将 Hive 数据导出到本地时,系统默认的分隔符是A、B、^C这些特殊字符,使用cat或者vim是看不到的。

写时模式:

在传统数据库(RDBMS)中,在加载时发现数据不符合表的定义,则拒绝加载数据。数据在写入数据库 时对照表模式进行检查,这种模式称为写时模式 (schema on write)。

读时模式:

Hive 中数据加载过程采用读时模式 (schema on read),加载数据时不进行数据格式的校验,读取数据 时如果不合法则显示NULL;

这种模式的优点是加载数据迅速,问题是格式不一致时很多数据都读为NULL。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 西南交通大学840数据结构编程大题-2019年

    第一题 typedef struct node {char data;struct node *lchild, *rchild; } *BT;试编写算法函数&#xff0c;形参传入二叉树根结点地址bt以及一个字符变量ch,函数返回二叉树结点data域值等于ch的结点数(若字符ch未包含在二叉树中&#xff0c;函数返回0)。 #include <stdio.…...

    2024/4/26 20:46:35
  2. C/C++ atof函数 - C语言零基础入门教程

    目录 一.atof 函数简介二.atof 函数函数实战三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.atof 函数简介 在 stdlib.h 中 atof 函数,可用于将 char 字符串转为 float / double 浮点数类型&#xff0c;语法如下&#xff1a; /* *描述&…...

    2024/4/14 20:30:51
  3. vscode输出端乱码怎么办?

    很多小伙伴在使用vscode时发现输出端出现乱码的现象&#xff0c;跑去更改系统的语言设置VScode是能用了但是其他软件打开有显示乱码&#xff0c;这就很烦了。那么有什么办法可以解决这个问题呢&#xff1f;请看下面分解。 1.打开code runner 插件。&#xff08;这个就默认大家…...

    2024/4/14 20:31:06
  4. Python基础学习看这个就够了(未完结)

    Python学习笔记 用Python实现伪随机数重现 >>>import random //Python需要引入模块函数 >>> x random.getstate() >>> random.setstate(x) //在此之前先生成一部分随机数(省) >>> random.randint(1,10) 8 >>…...

    2024/4/14 20:31:06
  5. 设计模式 : 享元模式

    享元模式 定义与类型 提供了减少对象数量从而改善应用所需的对象结构的方式运用共享技术有效的支持大量细粒度的对象类型&#xff1a;结构型 适用场景 常常应用于系统底层的开发&#xff0c;一边解决系统的性能问题系统有大量的相似对象&#xff0c;需要缓冲池的场景 优点 减…...

    2024/5/7 11:53:05
  6. 2021-11-07 递归算法输出循环单链表各个节点

    【问题描述】遍历输出带头结点的循环单链表的所有结点&#xff0c;要求使用递归算法&#xff08;注意&#xff1a;递归算法&#xff09; 【输入形式】 【输出形式】 【样例输入】5 15 16 17 18 19 【样例输出】15 16 17 18 19 【样例说明】链表长度为5 【运行结果如下】 【代码…...

    2024/4/14 20:31:38
  7. 无论是单片机还是自动控制(PLC)都是该专业的必修专业课

    无论是单片机还是自动控制&#xff08;PLC&#xff09;都是该专业的必修专业课 自动化专业是人们常说的万精油专业&#xff0c;涉猎广而不深&#xff0c;无论是单片机还是自动控制&#xff08;PLC&#xff09;都是该专业的必修专业课。 自动化技术的应用在人们的日常生活中无…...

    2024/4/15 1:26:25
  8. 设计模式 : 备忘录模式

    备忘录模式 定义与类型 保存一个对象的某个状态&#xff0c;以便在适当的时候恢复对象行为型 适用场景 保存及恢复数据相关业务场景后悔的时候&#xff0c;即想恢复到之前的状态 优点 为用户提供一种可恢复机制存档信息的封装 缺点 资源占用 演示地址 https://github.com/s…...

    2024/4/14 20:31:48
  9. turf.js实现多边形分割

    概述 在做编辑的时候&#xff0c;难免会遇到多边形的分割问题&#xff0c;本文用turf.js实现此功能。 效果 实现思路 实现代码 function polygonCut(poly, line, tolerance .001, toleranceType kilometers) {// 1. 条件判断if (poly.geometry void 0 || poly.geometry.ty…...

    2024/5/7 2:22:39
  10. 关于Tomcat 8.5.721‘: zip END header not found的解决方法

    今天想配置一下javaweb,但是编译过后报错Tomcat 8.5.721’: zip END header not found. 解决方法是直接把tomcat的解压缩后的文件直接全部删掉&#xff0c;用系统自带的解压缩文件重新进行解压&#xff0c;不要用winrar!! 问题解决~...

    2024/4/14 20:31:43
  11. LeetCode 2057. 值相等的最小索引

    文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的整数数组 nums &#xff0c;返回 nums 中满足 i mod 10 nums[i] 的最小下标 i &#xff1b;如果不存在这样的下标&#xff0c;返回 -1 。 x mod y 表示 x 除以 y 的 余数 。 示例 1&#xff1a; 输入&#xff1a;num…...

    2024/4/14 20:31:43
  12. File类常用方法一览(Java)

    File类的常见方法 &#xff08;Java&#xff09; 创建。 boolean createNewFile(); 创建文件 boolean mkdir(); 创建文件夹 boolean mkdirs(); 创建多级文件夹。 删除 boolean delete(); void deleteOnExit(); 在程序退出时删除文件。 判断 boolean canExcute(); 判断是否可执…...

    2024/4/17 3:25:39
  13. xxl-job基础组件核心类解解读二:JobTriggerPoolHelper

    前言&#xff1a; 在具体解读JobTriggerPoolHelper核心类功能原理的过程中你请大家先熟悉&#xff1a;ThreadPoolExecutor&#xff0c;volatile&#xff0c;ConcurrentMap&#xff0c;AtomicInteger等基础原理&#xff0c;同时请考虑下当采用集群部署时&#xff0c;JobTriggerP…...

    2024/4/19 14:08:52
  14. git 的origin的含义、rebase-变基

    “origin” 并无特殊含义 远程仓库名字 “origin” 与分支名字 “master” 一样&#xff0c;在 Git 中并没有任何特别的含义一样。 同时 “master” 是当你运行 git init 时默认的起始分支名字&#xff0c;原因仅仅是它的广泛使用&#xff0c;“origin” 是当你运行 git clone…...

    2024/4/16 6:53:24
  15. mysql day7 第八章 创建视图

    -- 第八章 1-创建视图 -- 视图不存储数据&#xff0c;数据存在表中 -- use sql_invoicing; -- create view sales_by_client as -- select -- c.client_id, -- c.name, -- sum(invoice_total) as total_sale -- from clients c -- join invoices i using (client_id) -- …...

    2024/4/14 20:31:38
  16. PYNQ在PS端进行图片缩放

    在完成PYNQ环境搭建后&#xff08;zynq7035单板创建PYNQ镜像V2.6&#xff09;&#xff0c;本文介绍如何在PS端进行图片缩放。 导入图片 进入jupyter后&#xff0c;使用updload&#xff0c;将图片导入到\192.168.2.99\xilinx\jupyter_notebooks中。 导入Bit文件 将工程文件夹…...

    2024/4/14 20:31:53
  17. 读取PCD文件的点云并在 RVIZ显示

    1. 创建功能包 catkin_init 之类的代码 2. src 源文件如下 : #include <ros/ros.h> #include <pcl/point_types.h> #include <pcl_conversions//pcl_conversions.h> #include <sensor_msgs/PointCloud2.h> #include <pcl/io/pcd_io.h> #includ…...

    2024/4/14 20:31:43
  18. vue中key的作用

    一、Key是什么&#xff0c; 我们都知道vue中在v-for的作用是对数据进行循环渲染&#xff0c;那么key在其中起到什么作用呢&#xff1f;如果不加key发什么&#xff1f;简单来说 报错 根据vue官方介绍 &#xff1a;key是给每一个vnode的唯一id&#xff0c;也是diff的一种优化策略…...

    2024/5/7 5:42:53
  19. Debug追踪

    一、Debug调试程序&#xff1a; 可以让代码逐行执行&#xff0c;查看代码执行的过程&#xff0c;调试程序中出现的bug 二、使用方式&#xff1a; 在行号的右边&#xff0c;鼠标左键单击&#xff0c;添加断点&#xff0c;右键&#xff1a;选择Debug执行程序&#xff0c;程序停留…...

    2024/4/18 3:52:39
  20. JavaScript原型和继承那些事儿

    1、es6 才有了类class的概念&#xff0c;之前都是构造函数实现的 2、构造函数的三个属性&#xff1a; 公有属性&#xff08;可以通过__proto__找到&#xff09;、私有属性、静态【方法&#xff08;es6&#xff09;、属性&#xff08;es7&#xff09;】 3、类的继承&#xff1…...

    2024/4/14 20:32:03

最新文章

  1. Java多线程:常见的线程的创建方法及Thread类详解

    目录 一.并发编程相关概念 线程与进程 多线程 Java中线程的状态 二.线程的创建方法 方法一&#xff1a;继承Thread类 方法二&#xff1a;实现Runnable接口 其他方法 三.Thread类详解 Thread常见构造方法 Thread常见属性 Thread常见方法 start() 与 run() sleep(…...

    2024/5/7 12:03:18
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. uos安装lxml避坑记录

    环境&#xff1a;紫光电脑uos系统 python&#xff1a;系统自带3.7.3 条件&#xff1a;已打开开发者模式&#xff0c;可以自行安装应用商店之外的软件 一、pip3 install lxml4.8.0可以正正常下载&#xff0c;但出现如下错误 另&#xff1a;为什么是4.8.0&#xff1f;因为这个…...

    2024/4/30 3:14:16
  4. 阿里云弹性计算通用算力型u1实例性能评测,性价比高

    阿里云服务器u1是通用算力型云服务器&#xff0c;CPU采用2.5 GHz主频的Intel(R) Xeon(R) Platinum处理器&#xff0c;ECS通用算力型u1云服务器不适用于游戏和高频交易等需要极致性能的应用场景及对业务性能一致性有强诉求的应用场景(比如业务HA场景主备机需要性能一致)&#xf…...

    2024/5/5 8:27:47
  5. ICMP协议和Tracert工作原理

    ICMP协议 使用基于 ICMP 协议来实现的命令 ping&#xff0c;traceroute 来判断网络是否连通。 ICMP是 Internet Control Message Protocol 的缩写&#xff0c;即互联网控制消息协议。它用于 TCP/IP 网络中发送控制消息&#xff0c;提供可能发生在通信环境中的各种问题反馈&am…...

    2024/5/2 14:23:38
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/7 5:50:09
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/6 9:21:00
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57