博主介绍:
✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生完成毕业项目和技术提升。技术范围:
我熟悉的技术领域涵盖SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等方面的设计与开发。如果你有任何技术难题,我都乐意与你分享解决方案。主要内容:
我的服务内容包括:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文撰写与辅导、论文降重、长期答辩答疑辅导。我还提供腾讯会议一对一的专业讲解和模拟答辩演练,帮助你全面掌握答辩技巧与代码逻辑。🍅获取源码请在文末联系我🍅
目录:
为什么选择我(我可以给你的定制项目推荐核心功能,一对一推荐)实现定制!!!
文章下方名片联系我即可~大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻精彩专栏推荐订阅:在下方专栏
一、详细操作演示视频
在文章的尾声,您会发现一张电子名片👤,欢迎通过名片上的联系方式与我取得联系,以获取更多关于项目演示的详尽视频内容。视频将帮助您全面理解项目的关键点和操作流程。期待与您的进一步交流!
承诺所有开发的项目,全程售后陪伴!!!
核心代码介绍:
HIVE函数处理:
# coding: utf-8
__author__ = 'ila'
import configparser
from hdfs.client import Client
def upload_to_hdfs(filename):
try:
port = 50070
cp = configparser.ConfigParser()
cp.read('config.ini')
client = Client(f"http://{cp.get('sql','host')}:{port}/")
user_dir = "tmp"
client.upload(hdfs_path=f'/{user_dir}/{filename}', local_path=filename, chunk_size=2 << 19, overwrite=True)
except Exception as e:
print(f'upload_to_hdfs eror : {e}')
def upload_file_to_hdfs(hdfs_url,dir,filename):
try:
client = Client(hdfs_url)
client.upload(hdfs_path=f'/{dir}/{filename}', local_path=filename, chunk_size=2 << 19, overwrite=True)
except Exception as e:
print(f'upload_to_hdfs eror : {e}')
if __name__=='__main__':
port = 50070
tmp_dir = "tmp"
hdfs_url=f"http://localhost:{port}/"
filepath="./naikexiezi/part-00000"
upload_file_to_hdfs(hdfs_url,tmp_dir,filepath)
Sprak函数处理:
# coding: utf-8
__author__ = 'ila'
import json
from flask import current_app as app
from pyspark.ml.classification import LogisticRegression
from pyspark.ml.clustering import KMeans
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.regression import LinearRegression
from pyspark.sql import SparkSession
def spark_read_mysql(sql, json_filename):
'''
排序
:param sql:
:param json_filename:
:return:
'''
df = app.spark.read.format("jdbc").options(url=app.jdbc_url,
dbtable=sql).load()
count = df.count()
df_data = df.toPandas().to_dict()
json_data = []
for i in range(count):
temp = {}
for k, v in df_data.items():
temp[k] = v.get(i)
json_data.append(temp)
with open(json_filename, 'w', encoding='utf-8') as f:
f.write(json.dumps(json_data, indent=4, ensure_ascii=False))
def linear(table_name):
'''
回归
:param table_name:
:return:
'''
spark = SparkSession.builder.appName("flask").getOrCreate()
training = spark.read.format("libsvm").table(table_name)
lr = LinearRegression(maxIter=20, regParam=0.01, elasticNetParam=0.6)
lrModel = lr.fit(training)
trainingSummary = lrModel.summary
print("numIterations: %d" % trainingSummary.totalIterations)
print("objectiveHistory: %s" % str(trainingSummary.objectiveHistory))
trainingSummary.residuals.show()
print("RMSE: %f" % trainingSummary.rootMeanSquaredError)
print("r2: %f" % trainingSummary.r2)
result = trainingSummary.residuals.toJSON()
spark.stop()
return result
def cluster(table_name):
'''
聚类
:param table_name:
:return:
'''
spark = SparkSession.builder.appName("flask").getOrCreate()
dataset = spark.read.format("libsvm").table(table_name)
kmeans = KMeans().setK(2).setSeed(1)
model = kmeans.fit(dataset)
centers = model.clusterCenters()
for center in centers:
print(center)
return centers
def selector(table_name, Cols):
'''
分类
:return:
'''
spark = SparkSession.builder.appName("flask").getOrCreate()
data = spark.read.table(table_name)
assembler = VectorAssembler(inputCols=Cols, outputCol="features")
data = assembler.transform(data).select("features", "label")
train_data, test_data = data.randomSplit([0.7, 0.3], seed=0)
lr = LogisticRegression(featuresCol="features", labelCol="label")
model = lr.fit(train_data)
predictions = model.transform(test_data)
return predictions.toJSON()
爬虫核心代码介绍(可以实时爬虫数据,做了反扒IP等处理)
# 数据爬取文件
import scrapy
import pymysql
import pymssql
from ..items import RemenshipinItem
import time
from datetime import datetime,timedelta
import re
import random
import platform
import json
import os
import urllib
from urllib.parse import urlparse
import requests
import emoji
# 热门视频
class RemenshipinSpider(scrapy.Spider):
name = 'remenshipinSpider'
spiderUrl = 'https://api.bilibili.com/x/web-interface/popular?ps=20&pn={}'
start_urls = spiderUrl.split(";")
protocol = ''
hostname = ''
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def start_requests(self):
plat = platform.system().lower()
if plat == 'linux' or plat == 'windows':
connect = self.db_connect()
cursor = connect.cursor()
if self.table_exists(cursor, 'bz8yt_remenshipin') == 1:
cursor.close()
connect.close()
self.temp_data()
return
pageNum = 1 + 1
for url in self.start_urls:
if '{}' in url:
for page in range(1, pageNum):
next_link = url.format(page)
yield scrapy.Request(
url=next_link,
callback=self.parse
)
else:
yield scrapy.Request(
url=url,
callback=self.parse
)
# 列表解析
def parse(self, response):
_url = urlparse(self.spiderUrl)
self.protocol = _url.scheme
self.hostname = _url.netloc
plat = platform.system().lower()
if plat == 'windows_bak':
pass
elif plat == 'linux' or plat == 'windows':
connect = self.db_connect()
cursor = connect.cursor()
if self.table_exists(cursor, 'bz8yt_remenshipin') == 1:
cursor.close()
connect.close()
self.temp_data()
return
data = json.loads(response.body)
list = data["data"]["list"]
for item in list:
fields = RemenshipinItem()
fields["biaoti"] = item["title"]
fields["fengmian"] = item["pic"]
fields["spdz"] = item["short_link_v2"]
fields["up"] = item["owner"]["name"]
fields["fabudi"] = item["pub_location"]
fields["miaoshu"] = item["desc"]
fields["spsc"] = item["duration"]
fields["leixing"] = item["tname"]
fields["bofangliang"] = item["stat"]["view"]
fields["dianzanliang"] = item["stat"]["like"]
fields["toubiliang"] = item["stat"]["coin"]
fields["shoucangliang"] = item["stat"]["favorite"]
fields["fenxiangliang"] = item["stat"]["share"]
yield fields
# 详情解析
def detail_parse(self, response):
fields = response.meta['fields']
return fields
# 去除多余html标签
def remove_html(self, html):
if html == None:
return ''
pattern = re.compile(r'<[^>]+>', re.S)
return pattern.sub('', html).strip()
# 数据库连接
def db_connect(self):
type = self.settings.get('TYPE', 'mysql')
host = self.settings.get('HOST', 'localhost')
port = int(self.settings.get('PORT', 3306))
user = self.settings.get('USER', 'root')
password = self.settings.get('PASSWORD', '123456')
try:
database = self.databaseName
except:
database = self.settings.get('DATABASE', '')
if type == 'mysql':
connect = pymysql.connect(host=host, port=port, db=database, user=user, passwd=password, charset='utf8')
else:
connect = pymssql.connect(host=host, user=user, password=password, database=database)
return connect
# 断表是否存在
def table_exists(self, cursor, table_name):
cursor.execute("show tables;")
tables = [cursor.fetchall()]
table_list = re.findall('(\'.*?\')',str(tables))
table_list = [re.sub("'",'',each) for each in table_list]
if table_name in table_list:
return 1
else:
return 0
# 数据缓存源
def temp_data(self):
connect = self.db_connect()
cursor = connect.cursor()
sql = '''
insert into `remenshipin`(
id
,biaoti
,fengmian
,spdz
,up
,fabudi
,miaoshu
,spsc
,leixing
,bofangliang
,dianzanliang
,toubiliang
,shoucangliang
,fenxiangliang
)
select
id
,biaoti
,fengmian
,spdz
,up
,fabudi
,miaoshu
,spsc
,leixing
,bofangliang
,dianzanliang
,toubiliang
,shoucangliang
,fenxiangliang
from `bz8yt_remenshipin`
where(not exists (select
id
,biaoti
,fengmian
,spdz
,up
,fabudi
,miaoshu
,spsc
,leixing
,bofangliang
,dianzanliang
,toubiliang
,shoucangliang
,fenxiangliang
系统功能模块设计
短视频推荐系统在设计与实现时,采取了模块性的设计理念,把相似的系统的功能整合到一个模组中,以增强内部的功能,减少各组件之间的联系,从而达到减少相互影响的目的。
系统主要包括热门视频、用户、用户反馈、论坛交流、系统管理、用户信息等功能。系统总体功能结构图如图4-1所示。
2.1python开发语言
Python是一种高级编程语言,由荷兰人Guido van Rossum于1989年创立,并于1991年首次发布。Python的设计哲学强调代码的可读性和简洁性,因此它被广泛应用于各种领域,包括Web开发、数据分析、人工智能和科学计算等。Python语言的最大特点是其语法简洁明了,易于学习和使用。Python支持多种编程范式,包括面向对象编程、函数式编程和过程式编程。Python还拥有丰富的标准库和第三方库,可以帮助开发者快速实现各种功能。在Web开发方面,Python有许多优秀的框架,如Django和Flask,它们可以帮助开发者快速构建高效的Web应用。这些框架提供了许多内置的功能,如数据库访问、表单处理和用户认证等,大大简化了Web开发的过程。在数据分析方面,Python是最受欢迎的编程语言之一。Python的pandas库提供了强大的数据处理和分析功能,可以帮助开发者轻松处理大量的数据。同时,Python的matplotlib和seaborn库可以用于数据可视化,帮助开发者更好地理解数据。在人工智能和机器学习方面,Python也有着广泛的应用。Python的TensorFlow和PyTorch库是最常用的深度学习框架,它们提供了丰富的工具和接口,可以帮助开发者构建和训练复杂的神经网络模型。
在科学计算方面,Python的NumPy和SciPy库提供了强大的数值计算功能,可以帮助开发者解决各种复杂的数学问题。Python的SymPy库还可以用于符号计算,为科学计算提供了更多的可能。
Python是一种强大而灵活的编程语言,无论你是初学者还是专业开发者,都可以从Python中获益。Python的简洁语法、丰富库和广泛的应用领域使其成为当今最受欢迎的编程语言之一。
2.2 Hadoop框架介绍
Hadoop是一个开源的分布式计算框架,旨在处理大规模数据集的存储和处理。它基于Google的MapReduce论文和Google文件系统(GFS)的概念,并由Apache软件基金会进行开发和维护。
Hadoop的核心组件包括Hadoop分布式文件系统(HDFS)和Hadoop YARN(Yet Another Resource Negotiator)。HDFS是一个可靠、高容错性的文件系统,设计用于在廉价硬件上存储大量数据,并提供高吞吐量的数据访问。YARN是一个资源管理器,负责调度和管理集群中的计算资源,使得多个应用程序可以共享集群资源并以并行方式运行。Hadoop的另一个重要组件是MapReduce,它是一种编程模型和执行引擎,用于将大规模数据集分解为小的数据块,并在分布式环境中进行并行处理。MapReduce模型将计算任务分为两个阶段:Map阶段和Reduce阶段。在Map阶段,数据被划分为若干个键值对,并通过用户定义的函数进行转换。在Reduce阶段,相同键的数据被合并和聚合,生成最终的结果。
Hadoop生态系统还包括许多其他工具和库,如Hive、Pig、HBase等,用于更方便地处理和分析数据。Hive是一个基于SQL的数据仓库工具,可以将结构化数据映射到Hadoop上,并提供类似于SQL的查询语言。Pig是一个高级脚本语言和运行环境,用于在Hadoop上进行数据转换和分析。HBase是一个分布式、可扩展的NoSQL数据库,适用于大规模的随机读写操作。
2.3 Scrapy介绍
Scrapy是一个基于Python的开源网络爬虫框架,用于快速、高效地抓取和提取互联网上的数据。它提供了一套强大的工具和API,使得开发者可以轻松地构建和管理自己的爬虫项目。Scrapy具有高度可定制性的特点。它采用了分布式架构,支持并发请求和异步处理,能够高效地处理大规模的数据抓取任务。同时,Scrapy还提供了丰富的中间件和插件机制,允许开发者根据自己的需求对请求、响应和数据进行处理和扩展。Scrapy还内置了强大的数据提取功能。通过使用XPath或CSS选择器,开发者可以方便地从HTML、XML等结构化数据中提取所需的信息,并进行清洗和转换。此外,Scrapy还支持使用正则表达式和自定义的解析器来处理非结构化数据。
Scrapy还提供了丰富的调度器和去重器,能够有效地控制爬虫的请求流程和避免重复抓取。它还支持多种存储方式,包括文件、数据库和API接口,方便开发者将抓取到的数据保存和导出。
2.4MySQL数据库
MySQL是一种开源的关系型数据库管理系统(RDBMS),被广泛应用于各种规模的企业和个人项目中。它是由瑞典MySQL AB公司开发并推出的,后来被Sun Microsystems收购,最终成为Oracle公司的一部分。MySQL以其高性能、可靠性和灵活性而闻名,成为最受欢迎的数据库之一。
MySQL具有许多优点,其中之一是其简单易用的特性。它采用了SQL(Structured Query Language)作为查询语言,使得用户可以通过简单的命令和语法来操作数据库。MySQL提供了丰富的文档和社区支持,使得初学者可以快速上手并解决问题。MySQL还具备出色的性能和扩展性。它可以处理大量的数据,并支持高并发访问。MySQL使用了多线程架构和高效的索引机制,以提供快速的数据读写和查询响应时间。MySQL还支持主从复制和分布式架构,可以轻松地实现数据的备份和负载均衡,满足不同规模和需求的项目。MySQL的可靠性和稳定性很高。它具备ACID(原子性、一致性、隔离性和持久性)特性,确保数据的完整性和一致性。MySQL还提供了多种备份和恢复机制,可以防止数据丢失和故障发生。MySQL支持多种编程语言的接口,如Python、Java、 PYTHON等,使得开发人员可以方便地与数据库进行交互。它还提供了丰富的存储引擎选项,如InnoDB、MyISAM等,以满足不同应用场景下的需求。
2.5 B/S模式
B/S模式,即浏览器/服务器模式,是一种常见的网络应用架构模式。在B/S模式中,用户通过浏览器作为客户端与服务器进行交互。相比于传统的C/S模式,B/S模式具有许多优势。B/S模式不需要安装客户端软件,只需通过浏览器访问网页即可使用,大大降低了部署和维护成本。B/S模式实现了跨平台和跨设备的应用访问,用户可以在任何具有浏览器的设备上使用应用程序。B/S模式将应用逻辑集中在服务器端,提高了系统的安全性和稳定性,并方便进行版本升级和功能扩展。B/S模式还支持多用户同时访问,实现了信息共享和协同办公。
2.6 django框架
Django是一个基于Python的高级Web框架,由美国开发者Adrian Holovaty和DavidDjango是一个基于Python的高级Web框架,由美国开发者Adrian Holovaty和David Beazley于2005年开发。Django的目标是简化Web开发的复杂性,提供快速、安全和可扩展的解决方案。它的核心理念是“让开发变得简单”,通过提供一系列内置的功能和工具,帮助开发者快速构建高质量的Web应用程序。Django具有许多独特的特性,使其成为了许多开发人员的首选框架。首先,Django遵循MVC(模型-视图-控制器)设计模式,将应用程序分为三个独立的组件,使得代码更加模块化和易于维护。Django提供了一套完整的ORM(对象关系映射)系统,允许开发者轻松地操作数据库,而无需编写复杂的SQL语句。此外,Django还提供了许多内置的模板引擎和表单处理功能,使得开发者可以快速地构建用户界面。Django还具有强大的安全性和可扩展性。它采用了多种安全措施,如输入验证、跨站请求伪造保护等,以确保应用程序的安全性。同时,Django支持多种数据库后端,可以根据项目需求灵活地选择。Django还提供了丰富的插件生态系统,可以方便地扩展应用程序的功能。
Django是一个功能强大、易于使用的Web框架,适用于各种规模的项目。它的简洁语法、丰富的功能和良好的社区支持使得它成为了许多开发人员的首选框架。