数据处理

Excel+GridView打造高级数据处理

二次信任 提交于 2020-03-27 08:12:02
利用 Excel结合GridView进行数据 导入/导出、编辑等功能,同时进行了扩展,好了下面简单列举实现的功能:) 原始数据表中数据: Excel 将要导入的数据: 导入后显示: 醒目 / 提示内容: 一键更新后显示(隐藏“一键更新”): 导入数据规则: a. 如果编号不存在,则添加一条数据,同时状态显示黄色图标表示是“新增”; b. 如果编号存在,则判断其他属性是否有更改,如果有更改则将字体加粗,同时鼠标放上时显示新值,状态显示为红色图标表示“有更新”; c. 如果是有更改的数据,可以通过状态醒目标示,同时操作列加入一键“ 更新 ”功能,该功能会将所有的数据替换为最新的数值; d. 新数据和旧数据都可在线 编辑 ,更新后状态显示为绿色图标表示“已更新”(默认第一次打开时所有状态为“未更改”,显示图标同上) 数据库表结构: 关键代码 + 说明: 页面临时表/虚拟表结构 /// <summary> /// Grid数据源 /// </summary> private DataTable DataSource { get { if (ViewState[ " _dataSource " ] == null ) { DataTable dt = new DataTable(); dt.Columns.Add( new DataColumn( " BSRID " , typeof (

Hadoop1重新格式化HDFS

荒凉一梦 提交于 2020-03-27 06:42:26
首先我们来认识一下HDFS, HDFS(Hadoop Distributed File System )Hadoop分布式文件系统。它其实是将一个大文件分成若干块保存在不同服务器的多个节点中。通过联网让用户感觉像是在本地一样查看文件,为了降低文件丢失造成的错误,它会为每个小文件复制多个副本(默认为三个),以此来实现多机器上的多用户分享文件和存储空间。 Hadoop主要包含三个模块: HDFS模块:HDFS负责大数据的存储,通过将大文件分块后进行分布式存储方式,突破了服务器硬盘大小的限制,解决了单台机器无法存储大文件的问题,HDFS是个相对独立的模块,可以为YARN提供服务,也可以为HBase等其他模块提供服务。 YARN模块:YARN是一个通用的资源协同和任务调度框架,是为了解决Hadoop中MapReduce里NameNode负载太大和其他问题而创建的一个框架。YARN是个通用框架,不止可以运行MapReduce,还可以运行Spark、Storm等其他计算框架。 MapReduce模块:MapReduce是一个计算框架,它给出了一种数据处理的方式,即通过Map阶段、Reduce阶段来分布式地流式处理数据。它只适用于大数据的离线处理,对实时性要求很高的应用不适用。多相关信息可以参考博客: 初识HDFS(10分钟了解HDFS、NameNode和DataNode) 。

Spark之RDD

送分小仙女□ 提交于 2020-03-25 21:26:40
一:RDD简介 (一)RDD概念 RDD(Resilient Distributed DataSet),弹性分布式数据集, 是Spark中最基本,也是最重要的数据抽象, 它 代表一个不可变、可分区、里面的元素可并行计算的集合 。RDD具有数据流模型的特点:自动容错、位置感知度调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能重用工作集,这极大地提升了查询速度。因为有RDD,所以Spark才支持分布式的计算。RDD由分区组成。 (二)RDD的五个特性 (1)一组分片( Partition ),即数据集的基本组成单位。---RDD会被分片处理,用于并行计算 对于RDD来说,每个分片都会被一个计算任务处理,并决定并行计算的粒度。用户可以在创建RDD时指定RDD的分片个数,如果没有指定,那么就会采用默认值。默认值就是程序所分配到的CPU Core的数目。 (2)一个计算每个分区的函数。---一个对每个split(数据分区)进行计算的函数,也称为RDD的算子 Spark中RDD的计算是以分片为单位的,每个RDD都会实现compute函数以达到这个目的。compute函数会对迭代器进行复合,不需要保存每次计算的结果。 (3)RDD之间的依赖关系。(DAG有向无环图调度构造依赖关系) RDD的每次转换都会生成一个新的RDD

python在数据处理中常用的模块之numpy

一笑奈何 提交于 2020-03-25 14:20:50
一 numpy模块 NumPy系统是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix))。 import numpy as np (1).np.linalg.norm(x) 顾名思义:linalg = linear + algebra,norm则表示范数,首先需要注意的是范数是对向量(或者矩阵)的度量,是一个 标量(scalar) : 首先help(np.linalg.norm查看文档 norm(x, ord=None, axis=None, keepdims=False) x表示要度量的向量,ord表示范数的种类 参数 说明 计算方法 默认 二范数 np.sqrt(x 1 **2+x 2 **2+....+x n **2) ord=2 二范数 同上 ord=1 一范数 |x 1 |+|x 2 |+...+|x n | ord=np.inf 无穷范数 max(|x i |) 用于计算向量x的2范数 x = np.array([3,4]) y = np.linalg.norm(x) print(y) 输出结果为5.0 计算矩阵x的2范数 对矩阵每一个元素求平方和然后开根号 x = np.array([3,4,5],[3,4,5]) y

在Hadoop上用Python实现WordCount

梦想的初衷 提交于 2020-03-24 23:45:58
一、简单说明   本例中我们用Python写一个简单的运行在Hadoop上的MapReduce程序,即WordCount(读取文本文件并统计单词的词频)。 这里我们将要输入的单词文本input.txt和Python脚本放到/home/data/python/WordCount目录下。 cd /home/data/python/WordCount vi input.txt 输入: There is no denying that hello python hello mapreduce mapreduce is good 二、编写Map代码   这里我们创建一个mapper.py脚本,从标准输入(stdin)读取数据,默认以空格分隔单词,然后按行输出单词机器词频到标准输出(stdout),整个Map处理过程不会统计每个单词出现的总次数,而是直接输出“word 1”,以便作为Reduce的输入进行统计,确保该文件是可执行的(chmod +x /home/data/python//WordCount/mapper.py)。 cd /home/data/python//WordCount vi mapper.py #!/usr/bin/env python # -*- coding:UTF-8 -*- import sys for line in sys.stdin: #sys

使用python+hadoop-streaming编写hadoop处理程序

扶醉桌前 提交于 2020-03-24 22:51:46
Hadoop Streaming提供了一个便于进行MapReduce编程的工具包,使用它可以基于一些可执行命令、脚本语言或其他编程语言来实现Mapper和 Reducer,从而充分利用Hadoop并行计算框架的优势和能力,来处理大数据 好吧我承认以上这句是抄的以下是原创干货 首先部署hadoop环境,这点可以参考 http://www.powerxing.com/install-hadoop-in-centos/ 好吧原创从下一行开始 部署hadoop完成后,需要下载hadoop-streaming包,这个可以到http://www.java2s.com/Code/JarDownload/hadoop-streaming/hadoop-streaming-0.23.6.jar.zip去下载,或者访问http://www.java2s.com/Code/JarDownload/hadoop-streaming/选择最新版本,千万不要选择source否则后果自负,选择编译好的jar包即可,放到/usr/local/hadoop目录下备用 接下来是选择大数据统计的样本,我在阿里的天池大数据竞赛网站下载了母婴类购买统计数据,记录了900+个萌萌哒小baby的购买用户名、出生日期和性别信息,天池的地址https://tianchi.shuju.aliyun.com/datalab/index

Hadoop Streaming详解

陌路散爱 提交于 2020-03-24 22:46:08
一: Hadoop Streaming详解 1、Streaming的作用 Hadoop Streaming框架,最大的好处是, 让任何语言编写的 map, reduce 程序能够在hadoop 集群上运行 ;map/reduce程序只要遵循从标准输入stdin读,写出到标准输出stdout即可 其次,容易进行单机调试,通过管道前后相接的方式就可以模拟streaming, 在本地完成map/reduce程序的调试 # cat inputfile | mapper | sort | reducer > output 最后,streaming框架还 提供了作业提交时的丰富参数控制 ,直接通过streaming参数,而不需要使用java语言修改;很多mapreduce的高阶功能,都可以通过steaming参数的调整来完成 2、Streaming的局限 Streaming 默认只能处理文本数据Textfile ,对于二进制数据,比较好的方法是将二进制的key, value进行base64编码,转化为文本 Mapper和reducer的前后都要进行标准输入和标准输出的转化 ,涉及数据拷贝和解析,带来了一定的开销 3、Streaming命令的相关参数 (普通选项、streaming选项) Streaming命令的形式如下: # /usr/local/src/hadoop-1.2.1/bin

hadoop学习笔记——用python写wordcount程序

大城市里の小女人 提交于 2020-03-24 22:42:15
尝试着用3台虚拟机搭建了伪分布式系统,完整的搭建步骤等熟悉了整个分布式框架之后再写,今天写一下用python写wordcount程序(MapReduce任务)的具体步骤。 MapReduce任务以来HDFS存储和Yarn资源调度,所以执行MapReduce之前要先启动HDFS和Yarn。我们都知道MapReduce分Map阶段和Reduce阶段,这就需要我们 自己写Map阶段的处理方法和Reduce阶段的处理方法。 MapReduce也支持除Java之外的其他语言,但要依赖流处理包(hadoop-streaming-2.7.4.jar),处理包不需要自己下载,hadoop本身带的就有,hadoop2.7的在 hadoop-2.7.4/share/hadoop/tools/lib 目录下,知道它所在的目录是因为只执行MapReduce命令的时候要指定hadoop-streaming-2.7.4.jar的位置。 接下来就是用python写Map的处理逻辑和Reduce的处理逻辑。wordcount是词频统计,要处理的原文本文件要上传到HDFS上,流程是原文本以流式方式传到Map函数,Map函数处理之后把结果传到Reduce函数,整个处理完后结果会保存在HDFS上,流式处理可以理解成文本一行一行的在原文件、Map函数、Reduce函数、结果文件之间流动处理。 原文本: hello

Kafka设计解析(七)Kafka Stream

久未见 提交于 2020-03-24 11:28:31
转载自 技术世界 ,原文链接 Kafka设计解析(七)- Kafka Stream 本文介绍了Kafka Stream的背景,如Kafka Stream是什么,什么是流式计算,以及为什么要有Kafka Stream。接着介绍了Kafka Stream的整体架构,并行模型,状态存储,以及主要的两种数据集KStream和KTable。并且分析了Kafka Stream如何解决流式系统中的关键问题,如时间定义,窗口操作,Join操作,聚合操作,以及如何处理乱序和提供容错能力。最后结合示例讲解了如何使用Kafka Stream。 目录 一、Kafka Stream背景 1. Kafka Stream是什么 2. 什么是流式计算 3. 为什么要有Kafka Stream 二、Kafka Stream架构 1. Kafka Stream整体架构 2. Processor Topology 3. Kafka Stream并行模型 4. KTable vs. KStream 5. State store 三、Kafka Stream如何解决流式系统中关键问题 1. 时间 2. 窗口 3. Join 4. 聚合与乱序处理 5. 容错 四、Kafka Stream应用示例 五、总结 一、Kafka Stream背景 1. Kafka Stream是什么 Kafka Stream是Apache

Spark2.0-RDD分区原理分析

纵饮孤独 提交于 2020-03-24 09:00:02
3 月,跳不动了?>>> Spark分区原理分析 介绍 分区是指如何把RDD分布在spark集群的各个节点的操作。以及一个RDD能够分多少个分区。 一个分区是大型分布式数据集的逻辑块。 那么思考一下:分区数如何映射到spark的任务数?如何验证?分区和任务如何对应到本地的数据? Spark使用分区来管理数据,这些分区有助于并行化分布式数据处理,并以最少的网络流量在executors之间发送数据。 默认情况下,Spark尝试从靠近它的节点读取数据到RDD。由于Spark通常访问分布式分区数据,为了优化transformation(转换)操作,它创建分区来保存数据块。 存在在HDFS或Cassandra中的分区数据是一一对应的(由于相同的原因进行分区)。 默认情况下,每个HDFS的分区文件(默认分区文件块大小是64M)都会创建一个RDD分区。 默认情况下,不需要程序员干预,RDD会自动进行分区。但有时候你需要为你的应用程序,调整分区的大小,或者使用另一种分区方案。 你可以通过方法 def getPartitions: Array[Partition] 来获取RDD的分区数量。 在spark-shell中执行以下代码: val v = sc.parallelize(1 to 100) scala> v.getNumPartitions res2: Int = 20 /