省赛样题1解析

2024-2025学年广东省职业院校技能大赛

中职组大数据应用与服务赛项

1

一、背景描述

在大数据技术快速发展的今天,房地产市场正经历着数字化转型。传统的房地产交易和分析模式主要依赖经纪人的个人经验和直觉,这种方式不仅效率低下,而且难以准确把握市场动态。随着大数据技术的应用,房地产行业正在向数据驱动的决策模式转变,这使得市场分析更加精准,服务更加个性化。

房地产大数据分析平台通过采集和处理海量的交易数据、用户行为数据和市场环境数据,可以全方位地描绘市场格局。这些数据包括但不限于房源基本信息、交易历史、区域配套设施、用户浏览轨迹、市场成交周期等。通过对这些数据的深度分析,可以准确预测房价走势、评估投资价值、识别市场机会,从而为购房者、房产经纪和开发商提供数据支持。为完成二手房销售数据分析工作,你所在的小组将应用大数据技术,通过 Python 语言以数据采集为基础,将采集的数据进行相应处理,并且进行数据标注、数据分析与可视化、通过大数据业务分析方法实现相应数据分析。运行维护数据库系统保障存储数据的安全性。通过运用相关大数据工具软件解决具体业务问题。你们作为该小组的技术人员,请按照下面任务完成本次工作。

二、模块一:平台搭建与运维

(一)任务一:大数据平台搭建

1.子任务一:基础环境准备

本任务需要使用 root 用户完成相关配置,安装 Hadoop 需要配置前置环境。命令中要求使用绝对路径,具体要求如下:

(1)配置三个节点的主机名,分别为 master、slave1、slave2,然后修改三个节点的 hosts 文件,使得三个节点之间可以通过主机名访问,在 master上将执行命令 cat /etc/hosts 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下;

(2)将 /opt/software 目录下将文件 jdk-8u191-linux-x64.tar.gz 安装包(若slave1、slave2节点不存在以上文件则需从master节点复制)解压到 /opt/module 路径中(若路径不存在,则需新建),将 JDK 解压命令复制并粘贴至【提交结果.docx】中对应的任务序号下;

1
[root@master software]# tar -zxvf jdk-8u391-linux-x64.tar.gz -C /opt/module/

(3)在 /etc/profile 文件中配置 JDK 环境变量 JAVA_HOME 和 PATH 的值,并让配置文件立即生效,将在 master上 /etc/profile 中新增的内容复制并粘贴至【提交结果.docx】中对应的任务序号下;

1
2
export JAVA_HOME=/opt/module/jdk
export PATH=$PATH:$JAVA_HOME/bin

(4)查看 JDK 版本,检测 JDK 是否安装成功,在 master 上将执行命令java -vserion 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下;

1
2
3
4
[root@master module]# java -version
java version "1.8.0_391"
Java(TM) SE Runtime Environment (build 1.8.0_391-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.391-b13, mixed mode)

(5)创建 hadoop 用户并设置密码,为 hadoop 用户添加管理员权限。在 master 上将执行命令 grep ‘hadoop’ /etc/sudoers 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下;

1
2
[root@master module]# grep 'hadoop' /etc/sudoers
hadoop ALL=(ALL) ALL

(6)关闭防火墙,设置开机不自动启动防火墙,在 master 上将执行命令 systemctl status fireawlld 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下;

1
2
3
4
5
6
7
8
9
10
11
12
[root@master module]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)

Feb 17 02:23:47 localhost.localdomain systemd[1]: Starting firewalld - dyn...
Feb 17 02:23:47 localhost.localdomain systemd[1]: Started firewalld - dyna...
Feb 17 02:23:47 localhost.localdomain firewalld[747]: WARNING: AllowZoneDr...
Feb 17 02:46:40 master systemd[1]: Stopping firewalld - dynamic firewall.....
Feb 17 02:46:40 master systemd[1]: Stopped firewalld - dynamic firewall ...n.
Hint: Some lines were ellipsized, use -l to show in full.

(7)配置三个节点的SSH免密登录,在 master 上通过 SSH 连接 slave1 和 slave2 来验证。

1
2
3
4
5
6
7
8
9
10
11
[root@master module]# ssh slave1
Last login: Mon Feb 17 02:49:05 2025 from master
[root@slave1 ~]# hostname
slave1
[root@slave1 ~]# exit
logout
Connection to slave1 closed.
[root@master module]# ssh slave2
Last login: Mon Feb 17 02:49:10 2025 from master
[root@slave2 ~]# hostname
slave2

2.子任务二:Hadoop 完全分布式安装配置

本任务需要使用 root 用户和 hadoop 用户完成相关配置,使用三个节点完成 Hadoop 完全分布式安装配置。命令中要求使用绝对路径,具体要求如下:

(1)在 master 节点中的 /opt/software 目录下将文件 hadoop-3.3.6.tar.gz 安装包解压到 /opt/module 路径中,将 hadoop 安装包解压命令复制并粘贴至【提交结果.docx】中对应的任务序号下;

1
[hadoop@master module]$ sudo tar -zxvf hadoop-3.3.6.tar.gz -C /opt/module/

(2)在 master 节点中将解压的 Hadoop 安装目录重命名为 hadoop ,并修改该目录下的所有文件的所属者为 hadoop,所属组为 hadoop,将修改所属者的完整命令复制并粘贴至【提交结果.docx】中对应的任务序号下;

1
[hadoop@master module]$ sudo chown -R hadoop:hadoop hadoop/

(3)在 master 节点中使用 hadoop 用户依次配置 hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、masters 和 workers 配置文件,Hadoop集群部署规划如下表,将 yarn-site.xml 文件内容复制并粘贴至【提交结果.docx】中对应的任务序号下;

服务器 master slave1 slave2
DHFS NameNode
HDFS SecondaryNameNode
HDFS DataNode DataNode DataNode
YARN ResourceManager
YARN NodeManager NodeManager NodeManager
历史日志服务器 JobHistoryServer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>/opt/module/hadoop/etc/hadoop:/opt/module/hadoop/share/hadoop/common/lib/*:/opt/module/hadoop/share/hadoop/common/*:/opt/module/hadoop/share/hadoop/hdfs:/opt/module/hadoop/share/hadoop/hdfs/lib/*:/opt/module/hadoop/share/hadoop/hdfs/*:/opt/module/hadoop/share/hadoop/mapreduce/*:/opt/module/hadoop/share/hadoop/yarn:/opt/module/hadoop/share/hadoop/yarn/lib/*:/opt/module/hadoop/share/hadoop/yarn/*</value>
</property>
<property>
<name>yarn.web-proxy.address</name>
<value>master:8089</value>
</property>
<property>
<name>yarn.log-aggregation.enable</name>
<value>true</value>
</property>
</configuration>

(4)在 master 节点中使用 scp 命令将配置完的 hadoop 安装目录直接拷贝至 slave1 和 slave2 节点,将完整的 scp 命令复制并粘贴至【提交结果.docx】中对应的任务序号下;

1
2
sudo scp -r hadoop/ slave1:/opt/module
sudo scp -r hadoop/ slave2:/opt/module

(5)在 slave1 和 slave2 节点中将 hadoop 安装目录的所有文件的所属者为 hadoop,所属组为 hadoop。

1
2
[hadoop@slave1 module]$ sudo chown -R hadoop:hadoop hadoop/
[hadoop@slave2 module]$ sudo chown -R hadoop:hadoop hadoop/

(6)在三个节点的 /etc/profile 文件中配置 Hadoop 环境变量 HADOOP_HOME 和 PATH 的值,并让配置文件立即生效,将 master 节点中 /etc/profile 文件新增的内容复制并粘贴至【提交结果.docx】中对应的任务序号下;

1
2
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

(7) 在 master 节点中初始化 Hadoop 环境 namenode,将初始化命令及初始化结果(截取初始化结果日志最后 20 行即可)粘贴至【提交结果.docx】中对应的任务序号下;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[hadoop@master hadoop]$ hadoop namenode -format

2025-02-17 03:30:54,631 INFO namenode.FSImage: Allocated new BlockPoolId: BP-515666401-192.168.1.91-1739781054627
2025-02-17 03:30:54,637 INFO common.Storage: Storage directory /data/nn has been successfully formatted.
2025-02-17 03:30:54,653 INFO namenode.FSImageFormatProtobuf: Saving image file /data/nn/current/fsimage.ckpt_0000000000000000000 using no compression
2025-02-17 03:30:54,714 INFO namenode.FSImageFormatProtobuf: Image file /data/nn/current/fsimage.ckpt_0000000000000000000 of size 401 bytes saved in 0 seconds .
2025-02-17 03:30:54,718 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2025-02-17 03:30:54,733 INFO namenode.FSNamesystem: Stopping services started for active state
2025-02-17 03:30:54,733 INFO namenode.FSNamesystem: Stopping services started for standby state
2025-02-17 03:30:54,735 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown.
2025-02-17 03:30:54,735 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at master/192.168.1.91
************************************************************/

(8) 在 master 节点中依次启动HDFS、YARN集群和历史服务。在 master 上将执行命令 jps 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下;

1
2
3
4
5
6
7
8
[hadoop@master hadoop]$ jps
8672 SecondaryNameNode
9478 WebAppProxyServer
9622 Jps
8491 DataNode
8907 ResourceManager
9228 NodeManager
9565 JobHistoryServer

(9) 在 slave1 查看 Java 进程情况。在 slave1上将执行命令 jps 的结果复制并粘贴至【提交结果.docx】中对应的任务序号下。

1
2
3
4
[hadoop@slave1 module]$ jps
2565 DataNode
2664 NodeManager
2780 Jps

3.子任务三:Zookeeper 集群安装配置

本任务需要使用 root 用户完成相关配置,已安装 Hadoop 及需要配置前置环境,具体要求如下:

(1)在 master 节点将 /opt/software 目录下的 apache-zookeeper-3.8.3-bin.tar.gz 包解压到 /opt/module 路径下, 将解压命令复制并粘贴至【提交结果.docx】中对应的任务序号下;

1
[root@master software]# tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/

(2)把解压后的 apache-zookeeper-3.8.3-bin 文件夹更名为 zookeeper-3.8.3,将命令复制并粘贴至【提交结果.docx】中对应的任务序号下;

1
[root@master module]# mv apache-zookeeper-3.5.7-bin/ zookeeper-3.5.7

(3)设置 zookeeper 环境变量,将新增的环境变量内容复制并粘贴至【提交结果.docx】中对应的任务序号下;

1
2
export ZOOKEEPER_HOME=/opt/module/zookeeper-3.5.7
export PATH=$PATH:$ZOOKEEPER_HOME/bin

(4)创建 zookeeper 配置文件 zoo.cfg 并配置 master、slave1、slave2 三个节点的集群配置,其中 dataDir 参数设置为 /opt/module/zookeeper-3.8.3/data ,提交 zoo.cfg 配置内容至【提交结果.docx】中对应的任务序号下;

1
2
3
4
5
dataDir=/opt/module/zookeeper-3.5.7/data

server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

(5)在 master 节点上创建文件 myid 用于标识服务器序号,并将文件内容设置为1;

1
2
[root@master data]# cat myid 
1

(6)在 master 节点上将配置的 zookeeper 环境变量文件及 zookeeper 解压包拷贝到 slave1、slave2 节点,提交命令至【提交结果.docx】中对应的任务序号下;

1
[root@master module]# scp -r zookeeper-3.5.7/ slave1:`pwd` && scp -r zookeeper-3.5.7/ slave2:`pwd` && scp /etc/profile slave1:/etc && scp /etc/profile slave2:/etc

(7)在 slave1 节点上修改 myid 文件内容修改为 2,在 slave2 节点上修改 myid 文件内容修改为 3,提交命令和结果截图粘贴至【提交结果.docx】中对应的任务序号下;

1
2
[root@slave1 data]# echo "2" > myid
[root@slave2 data]# echo "3" > myid

(8)在 master 节点、slave1 节点、slave2 节点分别启动 zookeeper,提交命令和结果截图粘贴至【提交结果.docx】中对应的任务序号下;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@master module]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

[root@slave1 data]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

[root@slave2 data]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

(9)在 master 节点、slave1 节点、slave2 节点分别查看 zookeeper 的状态,提交命令和结果截图粘贴至【提交结果.docx】中对应的任务序号下;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@master logs]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower

[root@slave1 data]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: leader

[root@slave2 data]# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Mode: follower

(10)在 master 节点查看 Java 进程,提交命令和结果截图粘贴至【提交结果.docx】中对应的任务序号下。

1
2
3
4
5
6
7
8
9
[root@master logs]# jps
8672 SecondaryNameNode
10309 QuorumPeerMain
9478 WebAppProxyServer
10393 Jps
8491 DataNode
8907 ResourceManager
9228 NodeManager
9565 JobHistoryServer

4.子任务四:Kafka 安装配置

本任务需要使用 root 用户完成相关配置,已安装 Hadoop 及需要配置前置环境,具体要求如下:

(1)从 master 中的 /opt/software 目录下将文件 kafka_2.12-3.6.1.tgz 解压到 /opt/module 目录下,把解压后的 kafka_2.12-3.6.1 文件夹更名为 kafka,将 Kafka 解压命令复制并粘贴至【提交结果.docx】中对应的任务序号下;

1
[root@master software]# tar -zxvf kafka_2.12-3.6.1.tgz -C /opt/module/

(2)配置好 zookeeper,其中 zookeeper 使用集群模式,分别将 master、slave1、slave2 作为其节点(若 zookpeer 已安装配置好,则无需再次配置);

(3)配置 Kafka 环境变量,并使环境变量生效,将新增的环境变量内容截图粘贴至【提交结果.docx】中对应的任务序号下;

1
2
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

(4) 使用 kafka-server-start.sh --version 查看 Kafka 的版本内容, 并将命令和结果截图粘贴至【提交结 果.docx】中对应的任务序号下;

1
2
3
[root@master module]# kafka-server-start.sh --version
[2025-02-17 03:54:04,061] INFO Registered kafka:type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$)
3.6.1

(5)修改 server.properties 配置文件,并分发 Kafka 文件到 slave1、slave2 中,并在每个节点启动 Kafka,将启动命令和结果截图粘贴至【提交结 果.docx】中对应的任务序号下;

1
2
3
4
5
[root@master kafka]# bin/kafka-server-start.sh config/server.properties

[root@slave1 kafka]# bin/kafka-server-start.sh config/server.properties

[root@slave2 kafka]# bin/kafka-server-start.sh config/server.properties

(6)创建 Topic,其中 Topic 名称为 installtopic,分区数为 2,副本数为 2,将创建命令和创建成果截图粘贴至【提交结果.docx】中对应的任务序号下。

1
2
[root@master kafka]# kafka-topics.sh --create --bootstrap-server master:9092 --partitions 2 --replication-factor 2 --topic installtopic
Created topic installtopic.

(二)任务二:数据库服务器的安装与运维

1. 子任务一:MySQL 安装配置

本任务需要使用 rpm 工具安装 MySQL 并初始化,具体要求如下:

(1) 在 master 节点中的 /opt/software 目录下将 MySQL 5.7.44 安装包解压到 /opt/module 目录下;

1
[root@master software]# tar -xvf mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar -C /opt/module/

(2)在 master 节点中使用 rpm -ivh 依次安装 mysql-community-common、mysql-community-libs、mysql-community-libs-compat 、 mysql-community-client 和 mysql-community-server 包,将所有命令复制粘贴至【提交结果.docx】 中对应的任务序号下;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@master module]# rpm -ivh mysql-community-common-5.7.44-1.el7.x86_64.rpmwarning: mysql-community-common-5.7.44-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-common-5.7.44-1.e################################# [100%]

[root@master module]# rpm -ivh mysql-community-libs-5.7.44-1.el7.x86_64.rpm
warning: mysql-community-libs-5.7.44-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-libs-5.7.44-1.el7################################# [100%]
[root@master module]# rpm -ivh mysql-community-libs-compat-5.7.44-1.el7.x86_64.rpm
warning: mysql-community-libs-compat-5.7.44-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-libs-compat-5.7.4################################# [100%]
[root@master module]# rpm -ivh mysql-community-client-5.7.44-1.el7.x86_64.rpm
warning: mysql-community-client-5.7.44-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-client-5.7.44-1.e################################# [100%]
[root@master module]# rpm -ivh mysql-community-server-5.7.44-1.el7.x86_64.rpm
warning: mysql-community-server-5.7.44-1.el7.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-server-5.7.44-1.e################################# [100%]

(3)在 master 节点中启动数据库系统并初始化 MySQL 数据库系统,将完整命令复制粘贴至【提交结果.docx】 中对应的任务序号下;

1
[root@master module]# mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql

2. 子任务二:MySQL 运维

本任务需要在成功安装 MySQL 的前提,对 MySQL 进行运维操作,具体要求如下:

(1)查看当前 MySQL 服务器状态和版本信息,并将命令和结果复制粘贴至【提交结果.docx】中对应的任务序号下;

1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.44 |
+-----------+
1 row in set (0.00 sec)

mysql> show status;
+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+-----------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Aborted_clients | 0

(2)创建一个名为 house_market 的数据库,设置其默认字符集为 utf8mb4,并将命令和结果复制粘贴至【提交结果.docx】中对应的任务序号下;

1
2
mysql> CREATE DATABASE house_market CHARACTER SET utf8mb4;
Query OK, 1 row affected (0.00 sec)

(3)创建两个用户账号:house_admin(具有所有权限)和 house_viewer(只具有查询权限),并将命令和结果复制粘贴至【提交结果.docx】中对应的任务序号下;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql> create user 'house_admin'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on house_market.* to 'house_admin'@'%';
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> create user 'house_viewer'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)

mysql> grant select on house_market.* to 'house_viewer'@'%';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

(4)为 house_market 数据库创建一个定时备份计划,每天凌晨2点自动备份数据库,并将命令和结果复制粘贴至【提交结果.docx】中对应的任务序号下;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@master ~]# mkdir mysqlBackup
[root@master ~]# vi mysqlBackup.sh
#!/bin/bash

DB_NAME="house_market"
BACKUP_DIR="/root/mysqlBackup"
DATE=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE="$BACKUP_DIR/$DB_NAME-$DATE.sql"

mysqldump -u root -p'123456' $DB_NAME > $BACKUP_FILE


[root@master ~]# chmod -x mysqlBackup.sh
[root@master ~]# crontab -e
0 2 * * * /root/mysqlBackup.sh
[root@master ~]# crontab -l
0 2 * * * /root/mysqlBackup.sh

[root@master ~]# sh mysqlBackup.sh
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@master mysqlBackup]# ls
house_market-20250217194213.sql

(5)使用命令查看 MySQL 当前的最大连接数和缓存大小配置,并将命令和结果复制粘贴至【提交结果.docx】中对应的任务序号下;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
1 row in set (0.00 sec)

mysql> show variables like 'query_cache_size';
+------------------+---------+
| Variable_name | Value |
+------------------+---------+
| query_cache_size | 1048576 |
+------------------+---------+
1 row in set (0.00 sec)

(6)修改 MySQL 配置,将最大连接数设置为1000,查询缓存大小设置为 64MB,并将命令和结果复制粘贴至【提交结果.docx】中对应的任务序号下;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@master mysqlBackup]# vi /etc/my.cnf
max_connections = 1000
query_cache_size = 64M

[root@master mysqlBackup]# systemctl restart mysqld

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 1000 |
+-----------------+-------+
1 row in set (0.00 sec)

mysql> show variables like 'query_cache_size';
+------------------+----------+
| Variable_name | Value |
+------------------+----------+
| query_cache_size | 67108864 |
+------------------+----------+
1 row in set (0.01 sec)

(7)查看 house_market 数据库中所有表的存储引擎类型,并将命令和结果复制粘贴至【提交结果.docx】中对应的任务序号下;

1
SHOW TABLE STATUS FROM house_market;

(8)创建一个名为 backup_user 的用户,只授予其备份相关的权限(BACKUP_ADMIN 和 RELOAD),并将命令和结果复制粘贴至【提交结果.docx】中对应的任务序号下;

1
2
3
4
mysql> create user 'backup_user'@'%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)

mysql> grant BACKUP_ADMIN,RELOAD on house_market.* to 'backup_user'@'%';

3. 子任务三:数据表的创建及维护

(1)根据以下数据字段在 house_market 数据库中创建房源信息表(house_info)。房源信息表字段如下:

字段 类型 中文含义 备注
house_id int 房源编号 主键
community varchar(100) 小区名称 不能为空
district varchar(50) 所在区域 不能为空
layout varchar(50) 户型 不能为空
area decimal(10,2) 建筑面积 不能为空
price decimal(12,2) 挂牌价格 不能为空
floor_info varchar(50) 楼层信息
orientation varchar(50) 朝向
status enum 房源状态 默认”在售”
1
2
mysql> create table house_info( house_id int primary key, community varchar(100) not null, district varchar(50) not null, layout varchar(50) not null, area decimal(10,2) not null, price decimal(12,2) not null, floor_info varchar(50) not null, orientation varchar(50) not null, status enum('在售') default '在售');
Query OK, 0 rows affected (0.02 sec)

(2)根据以下数据字段在 house_market 数据库中创建小区信息表(community_info)。小区信息表字段如下:

字段 类型 中文含义 备注
community_id int 小区编号 主键
community_name varchar(100) 小区名称 不能为空
district varchar(50) 所在区域 不能为空
build_year year 建成年份
property_fee decimal(10,2) 物业费用
subway_distance int 地铁距离 单位:米
1
2
mysql> create table community_info( community_id int primary key, community_naame varchar(100) not null, district varchar(50) not null, build_year year, prooperty_fee decimal(10,2), subway_distance int comment "单位:米");
Query OK, 0 rows affected (0.02 sec)

(3)根据以下数据字段在 house_market 数据库中创建交易记录表(transaction_records)。交易记录表字段如下:

字段 类型 中文含义 备注
record_id int 记录编号 主键
house_id int 房源编号 外键
transaction_date date 成交日期 不能为空
transaction_price decimal(12,2) 成交价格 不能为空
price_change decimal(12,2) 价格变动
transaction_type varchar(50) 交易类型 默认”二手房”
1
2
mysql> create table transaction_records( record_id int primary key, house_id int, transaction_date date not null, transaction_price decimal(12,2) not null, price_change decimal(12,2), transaction_type varchar(50) default '二手房',foreign key (house_id) references house_info(house_id));
Query OK, 0 rows affected (0.01 sec)

将这三个 SQL 建表语句分别复制粘贴至【提交结果.docx】中对应的任务序号下。

(4)将提供的数据文件 house_market_data.sql 导入数据库 house_market中并编写如下 SQL 查询语句:

  • 统计每个区域的在售房源数量和平均价格

    1
    2
    3
    4
    5
    6
    7
    8
    9
    mysql> select district, count(*) as house_count, avg(price) as avg_price from house_info where status='在售' group by district;
    +-----------+-------------+----------------+
    | district | house_count | avg_price |
    +-----------+-------------+----------------+
    | 丰台区 | 1 | 5000000.000000 |
    | 朝阳区 | 2 | 8000000.000000 |
    | 海淀区 | 2 | 9000000.000000 |
    +-----------+-------------+----------------+
    3 rows in set (0.00 sec)
  • 查询成交价格高于该区域平均成交价格的房源信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    mysql> SELECT t.record_id, h.community, h.district, h.layout, h.area, t.transaction_price
    -> FROM transaction_records t
    -> JOIN house_info h ON t.house_id = h.house_id
    -> WHERE t.transaction_price > (
    -> SELECT AVG(tr.transaction_price)
    -> FROM transaction_records tr
    -> WHERE tr.house_id = h.house_id
    -> );
    Empty set (0.01 sec)
  • 查询距离地铁站1000米以内的小区及其房源数量

    1
    2
    mysql> select community_name, count(*) as house_count from community_info where subway_distance < 1000 group by community_name;
    Empty set (0.00 sec)
  • 统计每种户型的平均单价(按面积计算)并按降序排列

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    mysql> select layout, avg(price / area) as avg_price from house_info group by layout order by avg_price desc;
    +--------------+------------------+
    | layout | avg_price |
    +--------------+------------------+
    | 四室两厅 | 80000.0000000000 |
    | 三室两厅 | 70539.4190870000 |
    | 三室一厅 | 68181.8181820000 |
    | 两室一厅 | 66666.6666670000 |
    | 两室两厅 | 50000.0000000000 |
    +--------------+------------------+
    5 rows in set (0.00 sec)
  • 查询最近一个月内成交的房源信息及其所在小区详情

    1
    2
    mysql> select h.house_id, h.community, h.district, h.layout, h.area, h.price, h.floor_info, h.orientation  from house_info h join transaction_records t on h.house_id=t.house_id where t.transaction_date >= date_sub(curdate(), interval 1 month);
    Empty set (0.00 sec)

将这五个 SQL 查询语句分别复制粘贴至【提交结果.docx】中对应的任务序号下。