毕业设计(论文)课题申报表
课题名称 | 基于hadoop+spark的漫画推荐与可视化系统 | 课题类型 | 设计 | 课题性质 | 结合实际 | ||||||||||||
课题来源 | 自拟 | 横、纵向项目名称 | 无 | ||||||||||||||
项目编号 | 无 | 项目来源 | 无 | ||||||||||||||
导师姓名 | 黄亮 | 职称 | 有否科研背景 | 有 | 有否实际工程背景 | 否 | |||||||||||
所在单位 | 数学与计算机学院 | 所学专业 | 上机时数 | 384(小时) | |||||||||||||
目的要求 |
| ||||||||||||||||
主要内容 |
| ||||||||||||||||
预期 目标 | (一)Selenium自动化Python爬虫工具采集漫画视频等约10万条存入.csv文件作为数据集; (二)使用pandas+numpy或MapReduce对数据进行数据清洗,生成最终的.csv文件并上传到hdfs; (三)使用hive数仓技术建表建库,导入.csv数据集; (四)离线分析采用hive_sql完成,实时分析利用Spark之Scala完成; (五)统计指标使用sqoop导入mysql数据库; (六)使用Flask+echarts进行可视化大屏开发; (七)使用机器学习、深度学习的算法进行个性化漫画视频推荐; (八)使用卷积神经网络KNN、CNN实现漫画视频流量预测; (九)搭建springboot+vue.js前后端分离web系统进行个性化推荐界面、漫画视频流量预测界面、知识图谱等实现; | ||||||||||||||||
教研室审查小组意见 | 本课题能否满足综合训练学生的教学要求 | ||||||||||||||||
课题中有无基本工程训练内容,份量多大(限于理工专业) | |||||||||||||||||
本课题的要求、任务、内容是否明确、具体 | |||||||||||||||||
进行本课题现有实施条件是否具备 | |||||||||||||||||
工作量是否饱满,课题难度是否适中 | |||||||||||||||||
进行本课题尚缺的条件本单位能否解决 | |||||||||||||||||
对本课题的评审结论: 教研室主任(签字): 20 年 月 日 | |||||||||||||||||
院系审定意见 | 院长(系主任)(签字): 20 年 月 日 |
注:1、表内各项内容指导教师都必须认真填写。2、上机时数包括论文录入时数(统一计24小时)和设计(论文)中需上机时数。3、课题类型:设计或论文。4、课题性质:结合实际或理论研究。5、课题来源:纵向、横向或自拟课题,对于纵向和横向课题要求需将项目名称、项目编号、项目来源(单位)等3栏填写清楚。
核心算法代码分享如下:
from flask import Flask, request
import json
from flask_mysqldb import MySQL
import io, sys
# 创建应用对象
app = Flask(__name__)
app.config['MYSQL_HOST'] = 'bigdata'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = '123456'
app.config['MYSQL_DB'] = 'hive_zymk'
mysql = MySQL(app) # this is the instantiation
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
@app.route('/tables01')
def tables01():
cur = mysql.connection.cursor()
cur.execute('''select * from (SELECT * FROM tables01 order by ctime desc limit 7) tt order by tt.ctime asc ''')
row_headers = [x[0] for x in cur.description] # this will extract row headers
rv = cur.fetchall()
json_data = []
print(json_data)
for result in rv:
json_data.append(dict(zip(row_headers, result)))
return json.dumps(json_data, ensure_ascii=False)
@app.route('/tables05')
def tables05():
cur = mysql.connection.cursor()
cur.execute('''select * from tables05 limit 5''')
#cur.execute('''SELECT * FROM tables05 ''')
row_headers = [x[0] for x in cur.description] # this will extract row headers
rv = cur.fetchall()
json_data = []
print(json_data)
for result in rv:
json_data.append(dict(zip(row_headers, result)))
return json.dumps(json_data, ensure_ascii=False)
@app.route('/tables06')
def tables06():
cur = mysql.connection.cursor()
cur.execute('''select * from tables06 limit 5''')
#cur.execute('''SELECT * FROM tables05 ''')
row_headers = [x[0] for x in cur.description] # this will extract row headers
rv = cur.fetchall()
json_data = []
print(json_data)
for result in rv:
json_data.append(dict(zip(row_headers, result)))
return json.dumps(json_data, ensure_ascii=False)
@app.route('/tables03')
def tables03():
cur = mysql.connection.cursor()
cur.execute('''select * from tables03 ''')
row_headers = [x[0] for x in cur.description] # this will extract row headers
rv = cur.fetchall()
json_data = []
print(json_data)
for result in rv:
json_data.append(dict(zip(row_headers, result)))
return json.dumps(json_data, ensure_ascii=False)
@app.route('/tables02')
def tables02():
cur = mysql.connection.cursor()
cur.execute('''SELECT * FROM tables02''')
row_headers = [x[0] for x in cur.description] # this will extract row headers
rv = cur.fetchall()
json_data = []
print(json_data)
for result in rv:
json_data.append(dict(zip(row_headers, result)))
return json.dumps(json_data, ensure_ascii=False)
@app.route('/tables04')
def tables04():
cur = mysql.connection.cursor()
cur.execute('''SELECT * FROM tables04''')
#row_headers = [x[1] for x in cur.description] # this will extract row headers
row_headers = ['title', 'book_reads']
rv = cur.fetchall()
json_data = []
print(json_data)
for result in rv:
json_data.append(dict(zip(row_headers, result)))
return json.dumps(json_data, ensure_ascii=False)
if __name__ == "__main__":
#app.run(debug=True)
app.run(host="0.0.0.0", port=8080, debug=False)