计算机毕业设计Spark+Flink+Hive地铁客流量预测 交通大数据 地铁客流量大数据 交通可视化 大数据毕业设计 深度学习 机器学习

项目说明​

1该项目主要分析通刷卡数据,通过大数据技术来研究地铁客运能力及探索优化服务的方向​

2主要讲解Flink流处理实时分析部分,离线部分较简单,暂时略过​

技术架构​

项目流程:​

采用python请求深圳地铁数据API,将数据发送至Kafka和MySQL。​

kafka部分用于实时计算,MySQL部分模仿业务数据,用于离线分析​

Flink连接Kafka进行实时统计各站收入情况​

将统计的结果Sink到Mysql进行可视化展示​

离线部分用sqoop将业务数据导入到hive中进行分析,最终将分析完的数据导出到MySQL用于可视化展示​

整体使用azkaban进行调度​

组件版本:

python 3.6.6​

java 1.8​

scala 2.11​

kafka_2.11-2.4.1​

zookeeper_3.4.6​

flink 1.14.0​

hadoop 2.7.6​

sqoop 1.4.6​

hive 1.2.1​

azkaban 2.5.0​

mysql 5.7​

FineReport 11

环境安装

注意:虚拟机环境中各组件已经安装完毕,此处不用实操,只是阐述组件安装的步骤。

随意实操导致项目环境不可用需另付费调试,更严重的话会导致数据丢失

虚拟机安装​

在VMware里安装Centos7虚拟机是最最最最最最最最最最最最最基本的,不会的话看下方资料​

这是整个项目的第一步,这都不会的话建议放弃任何项目。​

题外话:最终答辩的话没有哪个老师也会傻到问虚拟机是怎么安装的,因为太简单了​

VMware安装Centos7-超详细

Hadoop安装

## 配置ssh免密

ssh-keygen -t rsa​

ssh-copy-id bigdata​

## 解压

tar -zvxf hadoop-2.7.6.tar.gz -C /data/​

cd /data

mv hadoop-2.7.6/ hadoop​

cd /data/hadoop/etc/hadoop​

## 配置环境变量

vim /etc/profile​

#hadoop environment

export HADOOP_HOME=/data/hadoop​

export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin​

## 拿到jdk地址

echo ${JAVA_HOME}​

vim hadoop-env.sh​

## 25行修改 JavaHome

vim core-site.xml​

<!-- 指定HDFS老大(namenode)的通信地址 -->​

<property>​

<name>fs.defaultFS</name>​

<value>hdfs://bigdata:9000</value>​

</property>​

<!-- 指定hadoop运行时产生文件的存储路径 -->​

<property>​

<name>hadoop.tmp.dir</name>​

<value>/data/hadoop/tmp</value>​

</property>​

vim hdfs-site.xml​

<property>​

<name>dfs.name.dir</name>​

<value>/data/hadoop/hdfs/name</value>​

<description>namenode上存储hdfs名字空间元数据 </description>​

</property>​

<property>​

<name>dfs.data.dir</name>​

<value>/data/hadoop/data</value>​

<description>datanode上数据块的物理存储位置</description>​

</property>​

<!-- 设置hdfs副本数量 -->​

<property>​

<name>dfs.replication</name>​

<value>1</value>​

</property>​

<property> ​

<name>dfs.namenode.http-address</name> ​

<value>bigdata:50070</value> ​

</property>​

<property>​

<name>dfs.webhdfs.enabled</name>​

<value>true</value>​

</property>​

cp mapred-site.xml.template mapred-site.xml​

vim mapred-site.xml​

<!-- 通知框架MR使用YARN -->​

<property>​

<name>mapreduce.framework.name</name>​

<value>yarn</value>​

</property>​

<!-- 历史服务器端地址 -->​

<property>​

<name>mapreduce.jobhistory.address</name>​

<value> bigdata:10020</value>​

</property>​

<!-- 历史服务器web地址 -->​

<property>​

<name>mapreduce.jobhistory.webapp.address</name>​

<value> bigdata:19888</value>​

</property>​

<!--第三方框架使用yarn计算的日志聚集功能 -->​

<property>​

<name>yarn.log.server.url</name>​

<value>http://bigdata:19888/jobhistory/logs</value>​

</property>​

vim yarn-site.xml​

<!-- reducer取数据的方式是mapreduce_shuffle -->​

<property>​

<name>yarn.nodemanager.aux-services</name>​

<value>mapreduce_shuffle</value>​

</property>​

<property>​

<name>yarn.resourcemanager.hostname</name>​

<value>bigdata</value>​

</property>​

<!-- 日志聚集功能使能 -->​

<property>​

<name>yarn.log-aggregation-enable</name>​

<value>true</value>​

</property>​

<!-- 日志保留时间设置7天 -->​

<property>​

<name>yarn.log-aggregation.retain-seconds</name>​

<value>604800</value>​

</property>​

## 第一次启动前要格式化,后续如果二次格式化前一定要删除data目录和tmp目录

/data/hadoop/bin/hdfs namenode -format

## 启动

start-dfs.sh​

start-yarn.sh​

## 验证 jps 和新建目录上传文件等

hdfs dfs -mkdir -p /data/input​

hdfs dfs -put ./hello.txt /data/input

Mysql安装

1) 首先查看自己的集群中是否安装mysql数据库​

rpm -qa | grep mysql // 这个命令就会查看该操作系统上是否已经安装了mysql数据库​

2)要是安装了 通过 yum -y remove mysql 进行卸载​

卸载完之后一定要删除/etc/my.cnf,否则重装会失败​

3)依次安装6个rpm包 安装命令如下:​

rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm --nodeps --force

rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm --nodeps --force

rpm -ivh mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm --nodeps --force

rpm -ivh mysql-community-devel-5.7.19-1.el7.x86_64.rpm --nodeps --force

rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm --nodeps --force

rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm --nodeps --force

4)启动mysql​

systemctl start mysqld​

(5) 设置开机自启动mysql​

systemctl enable mysqld​

(6) 安装成功后 首先将数据库设置成无密码状态​

vi /etc/my.cnf ​

添加 skip-grant-tables 可保证为无密码状态​

7) 重启mysql服务器,保证生效 systemctl restart mysqld​

8)进入数据库 mysql -u root -p 按enter 键进入​

9) 选择数据库 use mysql;​

(10) 修改密码为123456 修改命令​

update user set authentication_string=password("123456") where user='root';​

1112) 刷新:flush privileges; 退出 quit;​

(13) 在此进入数据库 ,并建几个数据库 ​

mysql -u root -p 密码123456 ​

选择数据库 use mysql;​

use mysql; 会报错, 说让你重新设置密码.执行下面这一步,设置密码:​

set password = PASSWORD('123456');​

上面若设置密码成功,则直接执行这三步:​

#ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; ## 这个注释是防止下方字体变色

flush privileges;​

quit;​

上面若设置密码不成功,报错如下:​

mysql> set password = PASSWORD('123456');​

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements​

执行下面这几步:​

这个其实与validate_password_policy的值有关。​

执行下面命令 修改 即可​

mysql> set global validate_password_policy =0;​

Query OK, 0 rows affected (0.04 sec)​

mysql> set global validate_password_length = 6;​

Query OK, 0 rows affected (0.00 sec)​

然后重新 执行命令​

mysql>SET PASSWORD = PASSWORD('your new password');​

Query OK, 0 rows affected (0.00 sec)​

## 2.ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER

3.flush privileges;​

4.quit​

(14 )重新登录 mysql -u root -p 123456 ​

use mysql;​

create database cmf default character set = 'utf8';​

create database amon default character set = 'utf8';​

create database hue default character set = 'utf8';​

create database oozie default character set = 'utf8';​

create database lyz default character set = 'utf8';​

(15) 对mysql 数据库赋权,任何服务器都可以连接它,执行下面几步操作:​

select host,user from user;​

update user set host='%' where user = 'root'; ​

flush privileges; ​

quit;

Sqoop安装

## 解压

tar -zvxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /data/​

cd /data

mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop​

## 配置环境变量

## sqoop配置

cd /data/sqoop/conf​

cp sqoop-env-template.sh sqoop-env.sh​

vim sqoop-env.sh ## 在末尾添加,或在中间挨个去找接触注释

export HADOOP_COMMON_HOME=/data/hadoop​

export HADOOP_MAPRED_HOME=/data/hadoop​

export HIVE_HOME=/data/hive​

## 把mysql驱动包拷贝到lib下

cp /data/packages/mysql-connector-java-5.1.36.jar /data/sqoop/lib​

## 测试

## 使用sqoop查看mysql中所有的数据库

sqoop list-databases --connect jdbc:mysql://bigdata:3306/testdata?characterEncoding=UTF-8 --username root --password 123456

## 把MySQL中的表导入hdfs中   一定要启动hdfs和yarn

sqoop import -m 1 --connect jdbc:mysql://bigdata:3306/testdata?characterEncoding=UTF-8 --username root --password 123456 --table user --target-dir /data/input/user

Hive安装

PowerShell

## 前提是安装了Mysql

## 解压

tar -zvxf apache-hive-1.2.1-bin.tar.gz -C /data/​

mv /data/apache-hive-1.2.1-bin/ /data/hive​

cd /data/hive​

## 配置环境变量

## 修改配置

cd conf​

cp hive-default.xml.template hive-site.xml​

vim hive-site.xml​

 <property>  ​

 <name>metastore.warehouse.dir</name> ​

 <value>/user/hive/warehouse</value> ​

 </property> ​

 ​

 <property> ​

 <name>javax.jdo.option.ConnectionURL</name> ​

 <value>jdbc:mysql://bigdata/hive_remote?createDatabaseIfNotExist=true</value> ​

 </property> ​

 ​

 <property>​

 <name>hive.metastore.uris</name>​

 <value>thrift://bigdata:9083</value>​

 <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>​

 </property>​

 ​

 <property> ​

 <name>javax.jdo.option.ConnectionDriverName</name> ​

 <value>com.mysql.jdbc.Driver</value> ​

 </property> ​

 ​

 <property> ​

 <name>javax.jdo.option.ConnectionUserName</name> ​

 <value>root</value> ​

 </property> ​

 ​

 <property> ​

 <name>javax.jdo.option.ConnectionPassword</name> ​

 <value>123456</value> ​

 </property> ​

 ​

 <property>​

 <name>hive.exec.local.scratchdir</name>​

 <value>/data/hive/iotmp</value>​

 <description>Local scratch space for Hive jobs</description>​

 </property>​

 ​

 <property>​

 <name>hive.querylog.location</name>​

 <value>/data/hive/iotmp</value>​

 <description>Location of Hive run time structured log file</description>​

 </property>​

 <property>​

 <name>hive.downloaded.resources.dir</name>​

 <value>/data/hive/iotmp</value>​

 <description>Temporary local directory for added resources in the remote file system.</description>​

 </property>​

 ​

 ## 把mysql驱动包拷贝到lib下

 cp ./mysql-connector-java-5.1.36.jar /data/hive/lib/​

 ​

## 启动

## 启动前必须先启动hive的两个服务

cd /data/hive​

nohup hive --service metastore &​

nohup hive --service hiveserver2 &​

# 强制删除需要加上cascade关键字

drop database dwa cascade

Azkaban安装

## 先建立一个MySQL库

create database azkaban​

## 解压azkaban sql脚本,先在data目录下建好各个azkaban的目录

tar -zvxf azkaban-sql-script-2.5.0.tar.gz -C /data/azkaban/​

tar -zvxf azkaban-executor-server-2.5.0.tar.gz -C /data/azkaban/​

tar -zvxf azkaban-web-server-2.5.0.tar.gz -C /data/azkaban/​

## 执行sql文件  只需执行create-all-sql-2.5.0.sql这一个脚本即可创建所有的表

mysql -uroot -p

use azkaban;​

source  /data/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql;​

## 修改web服务器配置

## 在其 主目录下 生成生成KeyStore文件

cd /data/azkaban/azkaban-web-2.5.0

keytool -keystore keystore -alias jetty -genkey -keyalg RSA​

## 先设置一个密码

azkaban​

## 然后回答一堆问题,随便填,这里都填1

What is your first and last name?​

  [1]:  1

What is the name of your organizational unit?​

  [1]:  1

What is the name of your organization?​

  [1]:  1

What is the name of your City or Locality?​

  [1]:  1

What is the name of your State or Province?​

  [1]:  1

What is the two-letter country code for this unit?​

  [1]:  1

Is CN=1, OU=1, O=1, L=1, ST=1, C=1 correct?

  [no]:  yes​

## 最后再这块输入yes之后再次输入密码azkaban即可

## 把生成的文件移动到conf中

mv keystore ./conf/​

## 启动  单节点启动后无需进行注册,但此处配置了ssl,所以访问地址应该为https

## 一定要进入到executor目录下启动

## 因为在哪个目录下启动就会在哪个目录下产生一个executions文件夹,用来存放执行过的信息

cd /data/azkaban/azkaban-executor

nohup ./bin/azkaban-executor-start.sh >> ./log.log 2>1 &​

cd /data/azkaban/azkaban-web

nohup ./bin/azkaban-web-start.sh >> ./log.log 2>1 &​

https://bigdata:8443/index

核心算法代码分享如下:

# 发送json
data = json.dumps({'page': 1, 'rows': 200})
ret = requests.post(url, headers=header, data=data, timeout=1000)
json_data = json.loads(ret.text)
# print(json_data)
print('請求結果:', json_data)
for row in json_data['data']:
    print(row)
    # save_info(row)
    #save_road(row)

############################################# 解析 json 数据文件 ##########################################################
path = r"2018record3.jsons"
data = []
with open(path, 'r', encoding='utf-8') as f:
    for line in f.readlines():
        data += json.loads(line)['data']
data = pd.DataFrame(data)
columns = ['card_no', 'deal_date', 'deal_type', 'deal_money', 'deal_value', 'equ_no', 'company_name', 'station', 'car_no', 'conn_mark', 'close_date']
data = data[columns]  # 调整字段顺序
data.info()

############################################# 输出处理 ##########################################################
# 全部都是 交通运输 的刷卡数据
print(data['company_name'].unique())

# 删除重复值
# print(data[data.duplicated()])
data.drop_duplicates(inplace=True)
data.reset_index(drop=True, inplace=True)

# 缺失值
# 只有线路站点和车牌号两个字段存在为空,不做处理
# print(data.isnull().sum())

# 去掉脏数据
data = data[data['deal_date'] > '2018-08-31']
############################################# 数据保存 ##########################################################
print(data.info)

# 数据保存为 csv
data.to_csv('SZTcard.csv', index=False, header=None)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/686556.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

70 Realistic Mountain Environment Textures Cliff(70+张真实的山地环境纹理)

大量适合山区和其他岩石环境的纹理--悬崖、岩石、砾石等等 每个纹理都是可贴的/无缝的,并且完全兼容各种不同的场景--标准Unity地形、Unity标准着色器、URP、HDRP等等都兼容。 所有的纹理都是4096x4096,并包括一个HDRP掩码,以完全支持HDRP。 特点。 70种质地 70种材料 70个地…

基于springboot实现农产品直卖平台系统项目【项目源码+论文说明】

基于springboot实现农产品直卖平台系统的设计演示 摘要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔…

内网快速传输工具

常见的有LANDrop&#xff0c;支持多种设备&#xff0c;如电脑、pad、手机等等之间互传。但本文介绍的这款是很小的电脑间互传工具。 特点是非常的快速&#xff0c;文件很小&#xff0c;不用安装解压就可用。

transformers peft加载lora模型;TextStreamer流式输出,kv cache使用

1、transformers peft加载lora模型 https://github.com/hiyouga/LLaMA-Factory/blob/cae47379079ff811aa385c297481a27020a8da6b/scripts/loftq_init.py#L13 代码&#xff1a; from peft import AutoPeftModelForCausalLM, PeftModel from transformers import AutoTokenizer…

《手把手教你》系列练习篇之13-python+ selenium自动化测试 -压轴篇(详细教程)

1. 简介 “压轴”原本是戏曲名词&#xff0c;指一场折子戏演出的倒数第二个剧目。在现代社会中有很多应用&#xff0c;比如“压轴戏”&#xff0c;但压轴也是人们知识的一个盲区。“压轴”本意是指倒数第二个节目&#xff0c;而不是人们常说的倒数第一个&#xff0c;倒数第一个…

Incredibuild for Mac 来了!

Mac 开发者在寻找适合自己需求的工具时可能会遇到一些困难&#xff0c;因为 Mac 操作系统相对封闭&#xff0c;不像其他系统那样开放和灵活。尽管如此&#xff0c;Mac 开发者在开发应用程序时的需求&#xff08;比如功能、效率等&#xff09;和使用其他操作系统的开发者是类似的…

C++ - 查找算法 和 其他 算法

目录 一. 查找算法&#xff1a; 1.顺序查找&#xff1a; 2.二分查找&#xff1a; 二. 其他算法&#xff1a; 1.遍历算法&#xff1a; 2.求和、求平均值等聚合算法。 a.求和算法&#xff1a; b.求平均值算法&#xff1a; 一. 查找算法&#xff1a; 1.顺序查找&#xff1…

如何访问内网数据库?

现如今&#xff0c;随着信息化的不断发展&#xff0c;数据库已经成为了企业管理和数据存储的重要组成部分。由于安全等原因&#xff0c;很多公司和组织将自己的数据库部署在内网中&#xff0c;限制了外部的访问。有些情况下&#xff0c;我们仍然需要在外部网络环境中访问内网的…

C++开发基础之初探CUDA计算环境搭建

一、前言 项目中有使用到CUDA计算的相关内容。但是在早期CUDA计算环境搭建的过程中&#xff0c;并不是非常顺利&#xff0c;编写此篇文章记录下。对于刚刚开始研究的你可能会有一定的帮助。 二、环境搭建 搭建 CUDA 计算环境涉及到几个关键步骤&#xff0c;包括安装适当的 C…

:长亭雷池社区版动态防护体验测评

序 长亭雷池在最近发布了动态防护功能&#xff0c;据说可以动态加密保护网页前端代码和阻止爬虫行为、阻止漏洞扫描行为等。今天就来体验测试一下 WAF 是什么 WAF 是 Web Application Firewall 的缩写&#xff0c;也被称为 Web 应用防火墙。区别于传统防火墙&#xff0c;WAF …

Error:..\FreeRTOS\portable\RVDS\ARM_CM7\r0p1\port.c,265

移植完FreeRTOS后&#xff0c;使用Keil进行编译&#xff0c;编译未报错&#xff0c;串口打印助手打印了错误报告。 串口打印的错误报告&#xff1a; Error:..\FreeRTOS\portable\RVDS\ARM_CM7\r0p1\port.c,265看一下265行 该行所在函数为prvTaskExitError函数&#xff0c;功能…

阅读笔记:Multi-threaded Rasterization in the Chromium Compositor

Multi-threaded Rasterization in the Chromium Compositor PPT 原始链接&#xff1a; https://docs.google.com/presentation/d/1nPEC4YRz-V1m_TsGB0pK3mZMRMVvHD1JXsHGr8I3Hvc/edit?uspsharing PPT主要介绍了Chromium浏览器中使用多线程光栅化(Impl-side painting)的机制&a…

目标检测——FGVC-Aircraft数据集

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 …

【Vue】Vue路由-重定向

问题 网页打开时&#xff0c; url 默认是 / 路径&#xff0c;未匹配到组件时&#xff0c;会出现空白 解决方案 重定向 → 匹配 / 后, 强制跳转 /home 路径 语法 { path: 匹配路径, redirect: 重定向到的路径 }, 比如&#xff1a; { path:/ ,redirect:/home }代码示例 const…

docker构建jdk17镜像

资料参考 参考自黑马教程&#xff1a;10.Docker基础-自定义镜像_哔哩哔哩_bilibili 更多详细语法声明&#xff0c;请参考官网文档&#xff1a;https://docs.docker.com/engine/reference/builder 初步准备 1、下载jdk17包&#xff08;linux版&#xff09;&#xff0c;我这边版…

微信小程序多端框架打包后发布到APP Store

IPA 上架 App Store 生成 iOS 证书和 Provisioning Profile iOS 开发者账号缴/续费的发票查看和获取 个人开发者把小程序发布到 App Store 5个步骤&#xff08;保姆级教程&#xff09; 一、参数的设置、证书的生成、生成profile文件 微信小程序多端应用Donut IOS相关的参数…

佳能5DMARK IV mov视频覆盖的恢复方法

5DMARK IV算是佳能比较经典的一款摄像机&#xff0c;是佳能早期使用MOV的摄像机之一&#xff0c;MOV是当初佳能高端机的象征&#xff0c;当然现在佳能已经不在通过MOV和MP4来区分硬件级别了。下边这个案例是文件拍摄时断电&#xff0c;结果变成0字节&#xff0c;然后覆盖了部分…

解决Spark流处理产生的小文件问题

做流批一体&#xff0c;湖仓一体的大数据架构&#xff0c;常见的做法就是&#xff1a; 数据源->spark Streaming->ODS&#xff08;数据湖&#xff09;->spark streaming->DWD&#xff08;数据湖&#xff09;->... 那么数据源->spark Streaming->ODS&…

充电桩产业链及商业模式

产业链概况 充电桩产业链分为上游元器件和设备生产商、建设商&#xff0c;中游为运营商&#xff0c;下游为各类充电场景。其中&#xff0c;上游零部件厂商提供充电模块&#xff08;IGBT、逆变器等&#xff09;、配电滤波设备、监控计费设备、充电枪等&#xff1b;中游充电桩厂…

Linux Ext2/3/4文件系统

文章目录 前言一、Linux文件系统简介1.1 简介1.2 Linux File System Structure1.3 Directory Structure 二、Ext2/3/4文件系统2.1 Minix2.2 EXT2.3 EXT22.4 EXT32.5 EXT4 三、EXT Inode参考资料 前言 这篇文章介绍了Linux文件系统的一些基础知识&#xff1a;Linux 文件系统简介…