大数据课设

news2024/11/25 7:12:43

-----------------------------------------------------------------------------------------------------------------------------

由于本人主修嵌入式方向最多使用的就是C语言,由于物联网这个专业的特殊性,javaweb没少

写,所以java也用了一些,这次我使用了目前最火的python语言来实现我的大数据课设对我来说

是一次挑战。还好最后有惊无险的在规定时间内完成了。前端和数据分析这里还有一些问题没有

真正解决,数据用的也是虚拟数据,后面如果有机会继续深入学习大数据知识的话我会将这里完

善,并且随着嵌入式学习的深入,数据采集这里预计明年会将它完善。莫名其妙没保存上希望官方

可以修复一下这个bug,太痛了,几乎5/6都是重写的!!!!!!!!!!!!

-----------------------------------------------------------------------------------------------------------------------------

目录

一、环境配置

python包

 Hbase

二、创建数据库

三、模拟人的流动

四、数据处理

五、前端程序 


一、环境配置

python包

pip install package

package:

 Hbase

HBase——安装配置与shell操作_Devin01213的博客-CSDN博客

在/etc/profile中添加hbase的环境

之后试一下hbase shell

如果不好使多半是多开窗口了,这样只有配置的那个窗口和以后新建的窗口好使。

二、创建数据库

import happybase
#确定链接的ip和项目名称
connection = happybase.Connection('localhost', table_prefix='mybigdata')
connection.open()
print(connection.tables())
connection.create_table(
 'people',
 {
 'cf1': dict(max_versions=10),#最大生命周期是10
 'cf2': dict(max_versions=5, block_cache_enabled=False),#无块缓存
 'cf3': dict(), # use defaults
 } )
table = connection.table('people')
print(table)

  

 将csv的数据读取并存入数据库:

import happybase
import csv
from faker import Faker
import pandas 
import numpy as np


fake = Faker(locale='zh_CN')    # 设置中文
my_matrix = pandas.read_csv('test.csv')#,header=0,index_col=0)
row = np.array(my_matrix)

#connection = happybase.Connection('localhost', table_prefix='mybigdata')
connection = happybase.Connection('localhost')
connection.open()
print(connection.tables())

def data1(a):
    return row[a][0]
def data2(a):
    return str(row[a][1])
def data3(a):
    return str(row[a][2])

table = connection.table('people')
print(table) #<happybase.table.Table name=b'lrx_test'>
# 获取表实例,返回一个 happybase.table.Table 对象(返回表名)
table = happybase.Table('people',connection)
print(table) #<happybase.table.Table name='lrx_test'>

# 插入数据,无返回值 ----在 row1 行,data:1 列插入值 value1
for i in range(2500):
    with table.batch() as bat:
        bat.put(data1(i), {'cf1:name': 'name', 'cf1:uid': data1(i), 'cf1:address': '0001', 'cf1:number': '15160216049'})
        bat.put(data1(i), {'cf3:locus': data2(i),'cf3:time': data3(i)})
        bat.put(data1(i), {'cf2:danger': '3', 'cf2:chemod': '0', 'cf2:48': '3'})

三、模拟人的流动

这里我选择使用faker包来随机生成

人员流动:

import csv
from faker import Faker
fake = Faker(locale='zh_CN')    # 设置中文
def uid():
    return fake.ssn(min_age=0, max_age=100)
def locus():
    return fake.password(length=4,special_chars=False, digits=True, upper_case=False, lower_case=False)
def time():
    return fake.password(length=4,special_chars=False, digits=True, upper_case=False, lower_case=False)
headers = ['uid','locus','time']
'''
rows = [('202001','张三','98'),
        ('202002','李四','95'),
        ('202003','王五','92')]
'''
with open('test.csv','w',encoding='utf8',newline='') as f :
    writer = csv.writer(f)
    writer.writerow(headers)
    for i in range(50):
        sid = uid()
        for i in range(50):
            writer.writerows([(sid,locus()[0:3],time()[0:3])])

个人信息的生成:

 

import csv
from faker import Faker
fake = Faker(locale='zh_CN')    # 设置中文
def name():# 随机名字
    return fake.name()
def uid():
    return fake.ssn(min_age=0, max_age=100)
def address():
    return fake.address()
def phone():
    return fake.phone_number()
headers = ['uid','name','address','number']
with open('test1.csv','w',encoding='utf8',newline='') as f :
    writer = csv.writer(f)
    writer.writerow(headers)
    for i in range(50):
        sid = uid()
        writer.writerows([(sid,name(),address(),phone())])

 

四、数据处理

使用socket进行Windows到虚拟机的数据传输

服务器:

from faker import Faker
import json
import datetime
import socketserver  #用于进行都并发,即服务端能同时接收多个客户端的链接通信
import csv
import pandas 
import numpy as np
import serial
import time

fake = Faker(locale='zh_CN')    # 设置中文
IPSERVER = "192.168.3.5"
PORTSERVER = 8002
my_matrix = pandas.read_csv('test.csv')#,header=0,index_col=0)
row = np.array(my_matrix)
#18+3+3
def recv_csv(a):
    #time.sleep(2)
    return (str(row[a][0])+'+'+str(row[a][1])+'+'+str(row[a][2])+'\n')

def data1(a):
    return str(row[a][0])
def data2(a):
    return str(row[a][1])
def data3(a):
    return str(row[a][2])
class ETLserver(socketserver.BaseRequestHandler): #通讯

    def handle(self):  #相当于conn,client_addr=phone.accept(),必须定义一个handle函数
        print('========>',self)
        print(self.request) #相当于conn
        print(self.client_address) #相当于client_addr
        a=-1
        while True: #通讯循环
            a=a+1
            data =recv_csv(a)#tcp是基于数据流的,收发的消息不能为空,         
            if data != b'':
                print("receive : ",data)
                if str(data).find('+') != -1:
                    #uid,sid, hum = str(data).split('+')#拆分数据,也可以放到spark中处理

                    print(data)
                    self.request.send(data.encode())#重新编码!!!

if  __name__ == '__main__': #只在本脚本中执行
    #serial = serial.Serial('COM10', 115200, timeout=500)  # /dev/ttyUSB0    
    ip_port =(IPSERVER,PORTSERVER)
    obj =socketserver.ThreadingTCPServer(ip_port,ETLserver) #通过tcp线程的实例化对象

    obj.serve_forever() #有一个循环,处于链接循环,相当于phone.listen(5),同时会执行handle方法



客户端:

import os
import sys
import json

os.environ["PYSPARE_PYTHON"]="/usr/local/bin/python3"
os.environ["PYSPARE_DRIVER_PYTHON"]="/usr/local/bin/python3"
try:
    from pyspark import SparkContext
    from pyspark import SparkConf
    from pyspark.streaming import StreamingContext
    print ("Successfully imported Spark Modules")
except ImportError as e:
    print ("Can not import Spark Modules", e)
    sys.exit(1)

conf = SparkConf().setAppName('spark-streaming').setMaster('local[2]') #连接spark,一定要加载多核,单核会报错
sc = SparkContext(conf = conf) ##生成SparkContext 对象
ssc = StreamingContext(sc,2)
lines = ssc.socketTextStream("192.168.3.5", 8002)
#rdd = lines.flatMap(lambda x:x.split("+")).map(lambda x:(x,1)).reduceByKey(lambda x,y:x+y)
lines.pprint()###这里可以加一些处理过程,如数据库存储,格式变换
#rdduid = lines.map(lambda x:{'id':x.split("+")[0],'locus':x.split("+")[1],'time':x.split("+")[2]}).pprint()
rdduid = lines.map(lambda x:{'uid':x.split("+")[0],'locus':x.split("+")[1],'time':x.split("+")[2]})

ssc.start()             # Start the computation
ssc.awaitTermination()  #

 

五、前端程序 

由于时间来不及了,这里使用python写了一个死循环当前端:

import happybase
import csv
from faker import Faker
import pandas 
import numpy as np


fake = Faker(locale='zh_CN')    # 设置中文
my_matrix = pandas.read_csv('test.csv')#,header=0,index_col=0)
row = np.array(my_matrix)

#connection = happybase.Connection('localhost', table_prefix='mybigdata')
connection = happybase.Connection('localhost')
connection.open()
print(connection.tables())

def data1(a):
    return row[a][0]
def data2(a):
    return str(row[a][1])
def data3(a):
    return str(row[a][2])

table = connection.table('people')
print(table) #<happybase.table.Table name=b'lrx_test'>
# 获取表实例,返回一个 happybase.table.Table 对象(返回表名)
table = happybase.Table('people',connection)
n = 1
print(table) #<happybase.table.Table name='lrx_test'>
while (n == 1):
    uid = input("input uid:")
    # 通过指定列族中的列来检索数据
    row = table.row(uid, columns=['cf1:name', 'cf1:uid','cf1:address','cf1:number','cf2:danger','cf2:48'])
    print (row) #[b'value1', b'value1']
    n = int(input("input1/0:"))

上面程序是模拟读取个人信息下面程序是模拟行程轨迹

import happybase
import pandas 
import numpy as np

#my_matrix = pandas.read_csv('test.csv')#,header=0,index_col=0)
#row = np.array(my_matrix)
#connection = happybase.Connection('localhost', table_prefix='mybigdata')
connection = happybase.Connection('localhost')
connection.open()
print(connection.tables())


table = connection.table('people')
print(table) #<happybase.table.Table name=b'lrx_test'>
# 获取表实例,返回一个 happybase.table.Table 对象(返回表名)
table = happybase.Table('people',connection)
n = 1
print(table) #<happybase.table.Table name='lrx_test'>

while (n == 1):
    uid = input("input uid:")
    # 通过指定列族中的列来检索数据
    locus = table.cells(row = uid, column='cf3:locus')
    print ("locus:"+str(locus))
    time = table.cells(row = uid, column='cf3:time')
    print ("time:"+str(time))
    n = int(input("input1/0:"))

有很多需要继续完善的点,这个主意得到了老师们的一致好评,所以我会继续完善它,希望有一天真正的面向全国人民的线上医疗程序可以走进我们的手机。为我们的生活提供便利!!!!!!

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx动静分离

&#x1f341;博客主页&#xff1a;&#x1f449;不会压弯的小飞侠 ✨欢迎关注&#xff1a;&#x1f449;点赞&#x1f44d;收藏⭐留言✒ ✨系列专栏&#xff1a;&#x1f449;Linux专栏 &#x1f525;欢迎大佬指正&#xff0c;一起学习&#xff01;一起加油&#xff01; 目录&…

[附源码]Python计算机毕业设计SSM基于Java的租房系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

论文笔记:CycleMorph: Cycle Consistent UnsupervisedDeformable Image Registration

CycleMorph: Cycle Consistent Unsupervised Deformable Image Registration 针对本篇论文个人总结&#xff1a; 文章最重要的点在于施加循环一致性&#xff0c;模型有两个网络&#xff0c;移动图像与固定图像互相配准过程中施加约束优化网络提高配准精度&#xff0c;仔细看图…

如何求解欧拉路径?

求解欧拉路径前言一、案例二、回溯三、源码四、复杂度分析五、欧拉科普总结参考文献前言 欧拉路径 从图的一个节点出发&#xff0c;每条边只访问一次&#xff0c;遍历完了所有图节点&#xff0c;这条路径为欧拉路径。 一、案例 二、回溯 按照上面的例子&#xff0c;很容易理…

【LeetCode】1945. 字符串转化后的各位数字之和

题目描述 给你一个由小写字母组成的字符串 s &#xff0c;以及一个整数 k 。 首先&#xff0c;用字母在字母表中的位置替换该字母&#xff0c;将 s 转化 为一个整数&#xff08;也就是&#xff0c;‘a’ 用 1 替换&#xff0c;‘b’ 用 2 替换&#xff0c;… ‘z’ 用 26 替换&…

计算机网络原理第1章 概述

1.1 计算机网络在信息时代中的作用 1.2 互联网概述 1.2.1 网络的网络 互联网 特指Internet&#xff0c;起源于美国&#xff0c;现已发展成为世界上最大的、覆盖全球的计算机网络。 计算机网络 (简称为网络) 由若干结点(node)和连接这些结点的链路(link)组…

玩转MySQL:一站式解决分库分表后患问题方案

引言 上篇有关分分库分表一文中已经将分库分表的方法论全面阐述清楚了&#xff0c;总体看下来用一个字形容&#xff0c;那就是爽&#xff01;&#xff08;手动狗头&#xff09;尤其是分库分表技术能够让数据存储层真正成为三高架构&#xff0c;但前面爽是爽了&#xff0c;接着…

面试官:你觉得HTTPS能防止重放攻击吗?

引言 先来一段面试情景再现~~ ​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 最后的结局自然就是 ​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; OK&#xff0c;带着上面的疑问&#xf…

【SpringCloud负载均衡】【源码+图解】【四】负载均衡的实现

【SpringCloud负载均衡】【源码图解】【三】LoadBalancer的工作原理 目录4. 负载均衡4.1 提供者DiscoveryClient4.1.1 CompositeDiscoveryClient4.1.2 EurekaDiscoveryClient4.1.3 SimpleDiscoveryClient4.1.4 自定义DiscoveryClient4.2 过滤器Supplier4.2.1 CachingServiceIns…

Linux文本三剑客之grep命令

Linux文本三剑客之grep命令 1. grep 命令 介绍 grep 命令的基本语法格式和参数列表&#xff01; 文本搜索工具&#xff0c;根据用户指定的”模式”对目标文本逐行进行匹配检查&#xff0c;打印匹配到的行。 模式&#xff1a;由正则表达式字符及文本字符所编写的过滤条件&am…

MySQL 中截取字符串的方法

LEFT(str, len) 从左边开始截取&#xff0c;如果字符串为 null 则返回null。 str&#xff1a;被截取字符串&#xff1b;len&#xff1a;截取长度 SELECT LEFT(ABCDEFT, 2) FROM sub_str;RIGHT(str, len) 从右边开始截取&#xff0c;如果字符串为 null 则返回null。 str&…

0125 搜索与回溯算法 Day14

剑指 Offer 12. 矩阵中的路径 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻…

GLAD:带有反射壁的空心波导

概述 离散傅里叶变换的混叠效应为带有反射壁的空心波导的建模提供了一个便捷的方法。反射壁可以将光返回到光路中而混叠效应将使溢出光场从反方向折回到采样光场中。如果光场分布是一个偶函数&#xff0c;那么折回的作用就如同反射效果。我们可以将任意形状的光场分布转化成…

推荐一款免费的AI绘图软件,可生成二次元画作和3D模型

随着AI绘画的火热&#xff0c;市面上关于AI绘画的话题居高不小&#xff0c;各种教程、软件、小程序也是满天飞&#xff0c;在这些眼花缭乱的推荐中&#xff0c;究竟哪一款ai绘图软件才是真正适合自己的&#xff0c;不但免费&#xff0c;生成出来的二次元画作还很精美&#xff1…

早教资源网站

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 网站前台&#xff1a;关于我们、联系我们、公告信息、二手物品、资源信息 管理员功能&#xff1a; 1、管理关于我们、联…

Django 第三天学习笔记

1.模板层-变量和标签 能够传递到Django模板中的数据类型&#xff1a; 1.str 字符串 2.Int 整形 3.List 数组 4.Tuple 元组 5.Dict 字典 6.Func 方法 7.Obj 类的实例化对象。 在模板中使用的变量的语法&#xff1a; {{变量名}}{{变量名.index}} #索引{{变量名.key}} #获取字典对…

数据结构顺序栈

栈 这是大话数据结构种对于栈的描述 可以看到 栈是一种特殊的线性表 它只能在尾部进行元素的插入和删除 但是在栈种 这叫做 入栈 和 出栈 而且它遵循 先进入的元素后出 后进入的元素先出 即就是我们常听说的 先进后出 和后进先出 这里就有一个简单的例子 先进后出 后进先出…

【Node.js】实现微信小程序在线支付功能

实战项目名称&#xff1a;微信小程序实现在线支付功能 - 文章结尾附上微信小程序码&#xff0c;扫码登录后即可体验&#xff01;&#xff01; 文章目录一、实战步骤1. 前期准备2. 添加wechatpay-node-v3和fs插件3. 预设微信下单的数据4. 将上一步骤的下单信息返回给前端5. 小程…

在抖音全程看世界杯,超高清直播背后的硬实力

导语&#xff1a;IT技术赛场开赛&#xff01;作者 | 宋慧 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;当前&#xff0c;2022 卡塔尔世界杯比赛正在如火如荼进行中&#xff0c;处在更加激烈关键的半决赛阶段。作为足球运动的全球顶级赛事&#xff0c;世界杯…

SysML图例-核聚变

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> [新闻]核聚变里程碑式突破>> SysML图中词汇&#xff1a; Tokamak&#xff1a; 一种利用磁约束来实现受控核聚变的环形容器&#xff0c;通过约束电磁波驱动&#xff…