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

【大数据技术基础】 课程 第8章 数据仓库Hive的安装和使用 大数据基础编程、实验和案例教程(第2版)

第8章 数据仓库Hive的安装和使用

8.1 Hive的安装

8.1.1 下载安装文件

访问Hive官网(http://www.apache.org/dyn/closer.cgi/hive/)下载安装文件apache-hive-3.1.2-bin.tar.gz

下载完安装文件以后,需要对文件进行解压。按照Linux系统使用的默认规范,用户安装的软件一般都是存放在“/usr/local/”目录下。请在Linux系统中打开一个终端,执行如下命令:

sudo tar -zxvf ./apache-hive-3.1.2-bin.tar.gz -C /usr/local   # 解压到/usr/local中
cd /usr/local/
sudo mv apache-hive-3.1.2-bin hive       # 将文件夹名改为hive
sudo chown -R hadoop:hadoop hive          # 修改文件权限

8.1.2 配置环境变量

为了方便使用,可以把hive命令加入到环境变量PATH中,从而可以在任意目录下直接使用hive命令启动,请使用vim编辑器打开“~/.bashrc”文件进行编辑,命令如下:

vim ~/.bashrc

在该文件的最前面一行添加如下内容:

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

 保存该文件并退出vim编辑器,然后,运行如下命令使得配置立即生效:

source ~/.bashrc

8.1.3 修改配置文件

将“/usr/local/hive/conf”目录下的hive-default.xml.template文件重命名为hive-default.xml,命令如下:

cd /usr/local/hive/conf
sudo mv hive-default.xml.template hive-default.xml

 同时,使用vim编辑器新建一个文件hive-site.xml,命令如下:

cd /usr/local/hive/conf
vim hive-site.xml

在hive-site.xml中输入如下配置信息:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</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>

8.1.4 安装并配置MySQL

1. 安装MySQL

        这里采用MySQL数据库保存Hive的元数据,而不是采用Hive自带的derby来存储元数据,因此,需要安装MySQL数据库。可以参照“附录B:Linux系统中的MySQL安装及常用操作”,完成MySQL数据库的安装,这里不再赘述。

2. 下载MySQL JDBC驱动程序

为了让Hive能够连接到MySQL数据库,需要下载MySQL JDBC驱动程序。可以到MySQL官网(http://www.mysql.com/downloads/connector/j/)下载mysql-connector-java-5.1.40.tar.gz。

在Linux系统中打开一个终端,在终端中执行如下命令解压缩文件:

cd ~
tar -zxvf mysql-connector-java-5.1.40.tar.gz   #解压

下面将mysql-connector-java-5.1.40-bin.jar拷贝到/usr/local/hive/lib目录下

cp mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar  /usr/local/hive/lib

3. 启动MySQL

执行如下命令启动MySQL,并进入“mysql>”命令提示符状态:

service mysql start  #启动MySQL服务
mysql -u root -p   #登录MySQL数据库

4. 在MySQL中为Hive新建数据库

        现在,需要在MySQL数据库中新建一个名称为hive的数据库,用来保存Hive的元数据。MySQL中的这个hive数据库,是与Hive的配置文件hive-site.xml中的“mysql://localhost:3306/hive”对应起来的,用来保存Hive元数据。在MySQL数据库中新建hive数据库的命令,需要在“mysql>”命令提示符下执行,具体如下:

create database hive;

5. 配置MySQL允许Hive接入

需要对MySQL进行权限配置,允许Hive连接到MySQL。

grant all on *.* to hive@localhost identified by 'hive'; 
flush privileges; 

6. 启动Hive

Hive是基于Hadoop的数据仓库,会把用户输入的查询语句自动转换成为MapReduce任务来执行,并把结果返回给用户。因此,启动Hive之前,需要先启动Hadoop集群,命令如下:

cd /usr/local/hadoop
./sbin/start-dfs.sh

 然后,再执行如下命令启动Hive:

cd /usr/local/hive
./bin/hive

8.2 Hive的数据类型

Hive的基本数据类型

类型

描述

示例

TINYINT

1个字节(8位)有符号整数

1

SMALLINT

2个字节(16位)有符号整数

1

INT

4个字节(32位)有符号整数

1

BIGINT

8个字节(64位)有符号整数

1

FLOAT

4个字节(32位)单精度浮点数

1.0

DOUBLE

8个字节(64位)双精度浮点数

1.0

BOOLEAN

布尔类型,true/false

true

STRING

字符串,可以指定字符集

xmu

TIMESTAMP

整数、浮点数或者字符串

1327882394Unix新纪元秒)

BINARY

字节数组

[0,1,0,1,0,1,0,1]

 Hive的集合数据类型

8.3 Hive基本操作

8.3.1 创建数据库、表、视图

1. 创建数据库

创建数据库hive

hive> create database hive;

创建数据库hive,因为hive已经存在,所以会抛出异常,加上if not exists关键字,则不会抛出异常

hive> create database if not exists hive;

2. 创建表

在hive数据库中,创建表usr,含三个属性id,name,age

       hive> use hive;

       hive>create table if not exists usr(id bigint,name string,age int);

在hive数据库中,创建表usr,含三个属性id,name,age,存储路径为“/usr/local/hive/warehouse/hive/usr”

       hive>create table if not exists hive.usr(id bigint,name string,age int)

              >location ‘/usr/local/hive/warehouse/hive/usr’;

在hive数据库中,创建外部表usr,含三个属性id,name,age,可以读取路径“/usr/local/data”下以“,”分隔的数据。

       hive>create external table if not exists hive.usr(id bigint,name string,age int)

              >row format delimited fields terminated by ','

                location ‘/usr/local/data’;

在hive数据库中,创建分区表usr,含三个属性id,name,age,还存在分区字段sex。

       hive>create table hive.usr(id bigint,name string,age int) partition by(sex boolean);

在hive数据库中,创建分区表usr1,它通过复制表usr得到。

       hive> use hive;

       hive>create table if not exists usr1 like usr;

3. 创建视图

创建视图little_usr,只包含usr表中id,age属性

hive>create view little_usr as select id,age from usr;

8.3.2 删除数据库、表、视图

删除数据库

删除数据库hive,如果不存在会出现警告

      hive> drop database hive;

删除数据库hive,因为有if exists关键字,即使不存在也不会抛出异常

      hive>drop database if not exists hive;

删除数据库hive,加上cascade关键字,可以删除当前数据库和该数据库中的表

       hive> drop database if not exists hive cascade;

删除表

删除表usr,如果是内部表,元数据和实际数据都会被删除;如果是外部表,只删除元数据,不删除实际数据

      hive> drop table if exists usr;

删除视图

删除视图little_usr

      hive> drop view if exists little_usr;

8.3.3 修改数据库、表、视图

修改数据库

为hive数据库设置dbproperties键值对属性值来描述数据库属性信息

      hive> alter database hive set dbproperties(‘edited-by’=’lily’);

修改表

重命名表usr为user

      hive> alter table usr rename to user;

为表usr增加新分区

      hive> alter table usr add if not exists partition(age=10);

删除表usr中分区

     hive> alter table usr drop if exists partition(age=10);

把表usr中列名name修改为username,并把该列置于age列后

      hive>alter table usr change name username string after age;

在对表usr分区字段之前,增加一个新列sex

     hive>alter table usr add columns(sex boolean);

删除表usr中所有字段并重新指定新字段newid,newname,newage

     hive>alter table usr replace columns(newid bigint,newname string,newage int);

为usr表设置tblproperties键值对属性值来描述表的属性信息

      hive> alter table usr set tabproperties(‘notes’=’the columns in usr may be null except id’);

修改视图

修改little_usr视图元数据中的tblproperties属性信息

     hive> alter view little_usr set tabproperties(‘create_at’=’refer to timestamp’);

8.3.4 查看数据库、表、视图

查看数据库

查看Hive中包含的所有数据库

      hive> show databases;

查看Hive中以h开头的所有数据库

      hive>show databases like ‘h.*’;

查看表和视图

查看数据库hive中所有表和视图

      hive> use hive;

      hive> show tables;

查看数据库hive中以u开头的所有表和视图

      hive> show tables in hive like ‘u.*’;

8.3.5 描述数据库、表、视图

描述数据库

查看数据库hive的基本信息,包括数据库中文件位置信息等

      hive> describe database hive;

查看数据库hive的详细信息,包括数据库的基本信息及属性信息等

      hive>describe database extended hive;

描述表和视图

查看表usr和视图little_usr的基本信息,包括列信息等

hive> describe hive.usr/ hive.little_usr;

查看表usr和视图little_usr的详细信息,包括列信息、位置信息、属性信息等

hive> describe extended hive.usr/ hive.little_usr;

查看表usr中列id的信息

hive> describe extended hive.usr.id;

8.3.6 向表中装载数据

把目录’/usr/local/data‘下的数据文件中的数据装载进usr表并覆盖原有数据

      hive> load data local inpath ‘/usr/local/data’ overwrite into table usr;

把目录’/usr/local/data‘下的数据文件中的数据装载进usr表不覆盖原有数据

      hive> load data local inpath ‘/usr/local/data’ into table usr;

把分布式文件系统目录’hdfs://master_srever/usr/local/data‘下的数据文件数据装载进usr表并覆盖原有数据

      hive> load data inpath ‘hdfs://master_srever/usr/local/data’

            >overwrite into   table usr;

8.3.7 查询表中数据

该命令和SQL语句完全相同这里不再赘述。

8.3.8 向表中插入数据或从表中导出数据

向表usr1中插入来自usr表的数据并覆盖原有数据

      hive> insert overwrite table usr1

            > select * from usr where age=10;

向表usr1中插入来自usr表的数据并追加在原有数据后

      hive> insert into table usr1

            > select * from usr

            > where age=10;

8.4 Hive应用实例:WordCount

    现在我们通过一个实例——词频统计,来深入学习一下Hive的具体使用。首先,需要创建一个需要分析的输入数据文件,然后编写HiveQL语句实现WordCount算法,在Unix下实现步骤如下:

(1)创建input目录,其中input为输入目录。命令如下:

cd /usr/local/hadoopmkdir input

(2)在input文件夹中创建两个测试文件file1.txt和file2.txt,命令如下:

cd  /usr/local/hadoop/inputecho "hello world" > file1.txtecho "hello hadoop" > file2.txt

(3)进入hive命令行界面,编写HiveQL语句实现WordCount算法,命令如下:

  hive

  hive> create table docs(line string);

  hive> load data inpath 'input' overwrite into table docs;

  hive>create table word_count as

      select word, count(1) as count from

      (select explode(split(line,' '))as word from docs) w

      group by word

      order by word;

执行完成后,用select语句查看运行结果如下:

8.5 Hive编程的优势

        词频统计算法是最能体现MapReduce思想的算法之一,接下来,我们将比较WordCount算法在MapReduce中的编程实现和Hive中编程实现的主要不同点:

1.  采用Hive实现WordCount算法需要编写较少的代码量

        在MapReduce中,wordcount类由63行Java代码编写而成代码位置:%HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar;

而在Hive中只需要编写7行代码

2.  在MapReduce的实现中,需要进行编译生成jar文件来执行算法,而在Hive中不需要。

        HiveQL语句的最终实现需要转换为MapReduce任务来执行,这都是由Hive框架自动完成的,用户不需要了解具体实现细节。

8.6 本章小结

        Hive是一个构建于Hadoop顶层的数据仓库工具,主要用于对存储在 Hadoop 文件中的数据集进行数据整理、特殊查询和分析处理。Hive在某种程度上可以看作是用户编程接口,本身不存储和处理数据,依赖HDFS存储数据,依赖MapReduce处理数据。

        本章介绍了Hive的安装方法,包括下载安装文件、配置环境变量、修改配置文件、安装并配置MySQL等。Hive支持关系数据库中的大多数基本数据类型,同时Hive还支持关系数据库中不常出现的的3种集合数据类型。Hive提供了类似SQL的语句——HiveQL,可以很方便地对Hive进行操作,包括创建、修改、删除数据库、表、视图等。Hive的一大突出优点是,可以把查询语句自动转化成相应的MapReduce任务去执行得到结果,这样就可以大大节省用户的编程工作量,本章最后通过一个WordCount应用实例,充分展示了Hive的这一优点。

相关文章:

【大数据技术基础】 课程 第8章 数据仓库Hive的安装和使用 大数据基础编程、实验和案例教程(第2版)

第8章 数据仓库Hive的安装和使用 8.1 Hive的安装 8.1.1 下载安装文件 访问Hive官网&#xff08;http://www.apache.org/dyn/closer.cgi/hive/&#xff09;下载安装文件apache-hive-3.1.2-bin.tar.gz 下载完安装文件以后&#xff0c;需要对文件进行解压。按照Linux系统使用的…...

BERT 详解

BERT简介 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是由 Google 在 2018 年提出的一种预训练语言模型。BERT 在自然语言处理&#xff08;NLP&#xff09;领域取得了重大突破&#xff0c;因为它能够有效地捕捉文本的上下文信息&am…...

使用 MySQL 的 REPLACE() 函数轻松替换表中字段

前言 在数据库操作中&#xff0c;经常需要对存储的数据进行一些处理和修改&#xff0c;替换字段中的部分信息。MySQL 提供了多种字符串函数来帮助开发者完成这些任务。其中一个非常实用的函数就是 REPLACE()。 REPLACE() 函数简介 REPLACE() 函数用于在字符串中查找指定的子…...

Http 响应协议

HTTP的响应协议 响应数据格式 响应行 响应数据的第一行&#xff0c;包括协议、状态码、描述 响应头 从响应数据格式的第二行开始&#xff0c;也是以key:value的格式 响应体 和响应头之间有一个空行&#xff0c;是响应数据格式的最后一部分&#xff0c;用于存放响应的数据 常见响…...

TCP/IP 协议:网络世界的基石(2/10)

一、引言 在当今数字化时代&#xff0c;互联网已经成为人们生活中不可或缺的一部分。而在互联网的背后&#xff0c;TCP/IP 协议扮演着至关重要的角色&#xff0c;堪称互联网的基石。 TCP/IP 协议是一组用于数据通信的协议集合&#xff0c;它的名字来源于其中最重要的两个协议…...

Lua--1.基础知识

Lua基础知识 变量简单的4种变量类型复杂的4种变量类型type函数 字符串操作长度获取--#多行打印字符串拼接别的类型转字符串-- tostring()字符串提供的公共方法 运算符算术运算符-- - * / % ^条件运算符-- > < > < ~(不等于 是 ~)逻辑运算符-- and or not位运算、…...

【GPT】力量训练的底层原理?

详细解读力量训练的每一个底层原理 力量训练之所以有效&#xff0c;是因为它利用了肌肉、神经系统和生物化学反应的基本机制。以下逐一详细解析&#xff0c;并解释相关概念。 1. 应力-恢复-适应理论 概念解析 应力&#xff08;Stress&#xff09;&#xff1a;指训练带来的负…...

各种排序算法

前置知识 排序: 按照递增或者递减的顺序把数据排列好 稳定性: 值相等的元素在排序之后前后顺序是否发生了改变 内部排序: 数据放在内存上 外部排序: 数据放在磁盘上 内部排序 基于比较的排序 几大排序算法 1. 堆排序 特点: 思想: 1. 创建大根堆,把所有元素放在大根堆里…...

源码解读笔记:协程的 ViewModel.viewModelScope和LifecycleOwner.lifecycleScope

分析下ViewModel.viewModelScope public val ViewModel.viewModelScope: CoroutineScopeget() {val scope: CoroutineScope? this.getTag(JOB_KEY)if (scope ! null) {return scope}return setTagIfAbsent(JOB_KEY,CloseableCoroutineScope(SupervisorJob() Dispatchers.Ma…...

11.27周三F34-Day8打卡

文章目录 1. 学习让我感觉很棒。(什么关系?动作 or 描述?主语部分是?)解析答案:【解析答案分析】【对比分析】【拓展内容】2. 她忽然想起来钥匙放另一个包里了。解析答案:【拓展内容】3. 她来不来都没关系。(该由什么引导?这句话又属于什么关系,动作 or 描述?)解析答案…...

XG(S)-PON原理

前言 近年来&#xff0c;随着全球范围内接入市场的飞快发展以及全业务运营的快速开展&#xff0c;已有的PON技术标准在带宽需求、业务支撑能力以及接入节点设备和配套设备的性能提升等方面都面临新的升级需求XG(S)-PON(10G GPON)是在已有GPON技术标准上演进的增强下一代GPON技…...

C语言实例之9斐波那契数列实现

1. 斐波那契数列简介 斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列&#xff0c;因数学家莱昂纳多・斐波那契&#xff08;Leonardo Fibonacci&#xff09;以兔子繁殖为例子而引入&#xff0c;故又称为 “兔子数列”。 它的特点是从第三…...

YOLO系列论文综述(从YOLOv1到YOLOv11)【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】

目录 1 前言2 YOLO在不同领域的应用3 物体检测指标和NMS3.1 mAP和IOU3.2 mAP计算流程3.2.1 VOC 数据集3.2.2 微软 COCO 数据集 3.3 NMS 1 前言 最近在做目标检测模型相关的优化&#xff0c;重新看了一些新的论文&#xff0c;发现了几篇写得比较好的YOLO系列论文综述&#xff0…...

数据结构--Map和Set

目录 一.二叉搜索树1.1 概念1.2 二叉搜索树的简单实现 二.Map2.1 概念2.2 Map常用方法2.3 Map使用注意点2.4 TreeMap和HashMap的区别2.5 HashMap底层知识点 三.Set3.1 概念3.2 Set常用方法3.3 Set使用注意点3.4 TreeSet与HashSet的区别 四.哈希表4.1 概念4.2 哈希冲突与避免4.3…...

计算机操作系统——进程控制(Linux)

进程控制 进程创建fork&#xff08;&#xff09;函数fork() 的基本功能fork() 的基本语法fork() 的工作原理fork() 的典型使用示例fork() 的常见问题fork() 和 exec() 结合使用总结 进程终止与$进程终止的本质进程终止的情况正常退出&#xff08;Exit&#xff09;由于信号终止非…...

【前端】ES6基础

1.开发工具 vscode地址 :https://code.visualstudio.com/download, 下载对应系统的版本windows一般都是64位的 安装可以自选目录&#xff0c;也可以使用默认目录 插件&#xff1a; 输入 Chinese&#xff0c;中文插件 安装&#xff1a; open in browser&#xff0c;直接右键文件…...

【排序算法 python实现】

排序算法 python实现 / 默写 # 汉诺塔 import copy import randomdef hanuo(n, a, b, c):if n 1:print(f{a} --> {c})returnhanuo(n - 1, a, c, b)print(f{a} --> {c})hanuo(n - 1, b, a, c)hanuo(3, A, B, C)# 冒泡排序 def bubble_sort(arr):n len(arr)for i in ran…...

Java图书管理系统(简易保姆级)

前面学习了这么多知识&#xff0c;为了巩固之前的知识&#xff0c;我们就要写一个图书管理系统来帮助大家复习&#xff0c;让大家的知识融会贯通~~~ 话不多说&#xff0c;直接开始今天的内容~ 首先呢&#xff0c;我们要有一个大体的思路&#xff1a; 实现效果思路有两种情况&a…...

嵌入式硬件设计:从概念到实现的全流程

嵌入式硬件设计是现代电子技术中一个至关重要的领域&#xff0c;涉及从硬件架构设计到硬件调试的各个方面。它为我们日常生活中的各类智能设备、家电、工业控制系统等提供了强大的支持。本文将介绍嵌入式硬件设计的基本流程、关键技术、常用工具以及常见的挑战和解决方案&#…...

第 4 章 Java 并发包中原子操作类原理剖析

原子变量操作类 AtomicLong 是原子性递增或者递减类&#xff0c;其内部使用 Unsafe 来实现&#xff0c;AtomicLong类也是在 rt.jar 包下面的&#xff0c;AtomicLong 类就是通过 BootStarp 类加载器进行加载的。这里的原子操作类都使用 CAS 非阻塞算法 private static final lon…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...