数据处理

Hadoop介绍

本小妞迷上赌 提交于 2020-04-05 21:03:24
Hadoop 是什么 Hadoop是一个开源软件框架,用于在商用硬件集群上存储数据和运行应用程序。它为任何类型的数据提供海量存储,巨大的处理能力以及处理几乎无限的并发任务或作业的能力。 Hadoop是一个由 Apache 基金会所开发的分布式系统基础架构 主要解决海量数据的存储和海量数据的分析计算问题 广义上来说 Hadoop 通常是指一个更广泛的概念—— Hadoop 生态圈 Hadoop 发展历史 Lucene框架是Doug Cutting开创的开源软件,用Java书写代码,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎。 Hadoop 创始人 发展历程 2001年年底Lucene成为Apache基金会的一个子项目 对于海量数据的场景,Lucene面对与Google同样的困难,存储数据困难,检索速度慢。 学习和模仿Google解决这些问题的办法 :微型版Nutch。 可以说Google是Hadoop的思想之源(Google在大数据方面的三篇论文) 2003-2004年,Google公开了部分GFS和MapReduce思想的细节,以此为基础Doug Cutting等人用了2年业余时间实现了DFS和MapReduce机制,使Nutch性能飙升。 2005 年Hadoop 作为 Lucene的子项目

【赵强老师】在Spark SQL中读取JSON文件

拈花ヽ惹草 提交于 2020-04-05 17:17:04
Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。为什么要学习Spark SQL?如果大家了解Hive的话,应该知道它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢。所以Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!同时Spark SQL也支持从Hive中读取数据。 Spark SQL也能自动解析JSON数据集的Schema,读取JSON数据集为DataFrame格式。 读取JSON数据集方法为SQLContext.read ().json()。该方法将String格式的RDD或JSON文件转换为DataFrame。 需要注意的是,这里的JSON文件不是常规的JSON格式。JSON文件每一行必须包含一个独立的、自满足有效的JSON对象。如果用多行描述一个JSON对象,会导致读取出错。 需要用到的测试数据:people.json {"name":"Michael"} {"name":"Andy", "age":30} {"name":"Justin", "age":19} 定义路径 val path ="/root/temp

数据处理----离散化

可紊 提交于 2020-04-04 09:47:28
离散化的定义:离散化,把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。(by百度百科) 为什么要离散化处理? 打个比方,某个题目告诉你有10^4个数,每个数大小不超过10^10,要你对这些数进行操作,需要开10^10的数组,当然这是不可能的,但是10^4的范围就完全没问题。 我们可以把这些数映射到一个新的数组中,只改变元素大小,但是不改变其相对大小。 所以离散化只能用在只考虑元素的相对大小,而不考虑元素本身的问题。 离散化操作用到了三个函数 sort, unique, lower_bound. 具体步骤看代码: #include<bits/stdc++.h> using namespace std; const int N=1E5+7; int arr1[N],arr2[N]; int rank[N];//离散化数组 int main(){ int n; cin>>n; for(int i=1;i<=n;i++) { cin>>arr1[i]; arr2[i]=arr1[i]; } sort(arr2+1,arr2+1+n);//首先对arr2排序 int len=unique(arr2+1,arr2+1+n)-arr2-1;//然后是去重以及去重后的大小 for(int i=1;i<=n;i++){ rank[i]=lower_bound(arr2+1

编程十七年心得与流水账

删除回忆录丶 提交于 2020-04-04 02:47:59
前言: 好些年没有写博客了。 最近公司很忙很忙,在从早到晚连轴转的情况下,感觉需要花点多思考思考自己的事情。从03年高一正式学习编程算起,已经经过了17年了。工作也十年了。回想起这17年,突然有种想记录一下流水账:一方面不希望有些东西之后忘记了,另一方面也希望自己的经历和教训能够帮助到别人。 高中三年 (2003-2006): 我03年上高一,高中是全国比较有名的搞计算机竞赛的学校,出了几位OI金牌和银牌。这点上是一个很好的机遇,之前对电脑是非常的爱好,那时候是比尔盖茨、乔布斯的年代,为了学习编程,刚上高中就开始了编程竞赛训练。当时高中时期就经常做ACM题库的训练,也做了美国的计算机竞赛的题目练习(USACO)。高一的那次竞赛准备时间很短,成绩很不理想,做到高二的时候已经对动态规划,各种搜索之类的非常熟悉了,差不多刷了PKU、USACO前前后后几百道题。写个堆啊快排啊BFS啥的也基本上可以闭着眼睛写完。高二的那次省赛也没什么包袱,还记得400分的总分拿了380分,扣掉的20分是有一个搜索剪枝没有写好。当时信心爆棚觉得自己应该半只脚踏进清华了。 后来没有想到自己在省队选拔赛里面做得非常不理想,现在都还记得当时有个Dijkstra需要用堆来优化的算法没有写好,所以与省队失之交臂,基本上是煮熟的鸭子都飞掉的感觉。然后后面的选择就是,要么靠着省赛一等奖的高考20分加分去高考

Mysql实战45讲----为什么学习mysql

你。 提交于 2020-04-01 12:30:25
  即使是一个开发工程师,也只是 MySQL 的用户,但在了解了一个个系统模块的原理后,再来使用它,感觉是完全不一样的。   当在代码里写下一行数据库命令的时候,就能想到它在数据库端将怎么执行,它的性能是怎么样的,怎样写能让应用程序访问数据库的性能最高。进一步,哪些数据处理让数据库系统来做性能会更好,哪些数据处理在缓存里做性能会更好,心里也会更清楚。在建表和建索引的时候,我也会更有意识地为将来的查询优化做综合考虑,比如确定是否使用递增主键、主键的列怎样选择,等等。   所以需要系统的学习mysql,形成学习网络而不是只知道零散的知识点。可能一个业务开发人员用了两三年 MySQL,还未必清楚那些自己一直在用的“最佳实践”为什么是最佳的。   看完这些需要输出自己的mysql知识网络。    来源: https://www.cnblogs.com/lvzhenhua/p/12610213.html

IDEA,SparkSql读取HIve中的数据

十年热恋 提交于 2020-03-31 18:08:10
传统Hive计算引擎为MapReduce,在Spark1.3版本之后,SparkSql正式发布,并且SparkSql与apache hive基本完全兼容,基于Spark强大的计算能力,使用Spark处理hive中的数据处理速度远远比传统的Hive快。 在idea中使用SparkSql读取HIve表中的数据步骤如下 1、首先,准备测试环境,将hadoop集群conf目录下的core-site.xml、hdfs-site.xml和Hive中conf目录下hive-site.xml拷贝在resources目录下 2、pom依赖 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.7.1</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-hive_2.11<

Impala和Hive的关系(详解)

旧城冷巷雨未停 提交于 2020-03-30 15:11:06
Impala和Hive的关系    Impala是基于Hive的大数据实时分析查询引擎 ,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中。并且impala兼容Hive的sql解析,实现了Hive的SQL语义的子集,功能还在不断的完善中。 与Hive的关系   Impala 与Hive都是构建在Hadoop之上的数据查询工具各有不同的侧重适应面,但从客户端使用来看Impala与Hive有很多的共同之处,如数据表元数 据、ODBC/JDBC驱动、SQL语法、灵活的文件格式、存储资源池等。 Impala与Hive在Hadoop中的关系如下图 所示。 Hive适合于长时间的批处理查询分析 , 而Impala适合于实时交互式SQL查询 ,Impala给数据分析人员提供了快速实验、验证想法的大数 据分析工具。可以先使用hive进行数据转换处理,之后使用Impala在Hive处理后的结果数据集上进行快速的数据分析。              Impala相对于Hive所使用的优化技术 1、没有使用 MapReduce进行并行计算,虽然MapReduce是非常好的并行计算框架,但它更多的面向批处理模式,而不是面向交互式的SQL执行。与 MapReduce相比:Impala把整个查询分成一执行计划树,而不是一连串的MapReduce任务

Python实现Hadoop MapReduce程序

安稳与你 提交于 2020-03-28 16:23:02
/*--> */ /*--> */ 1.概述 Hadoop Streaming提供了一个便于进行MapReduce编程的工具包,使用它可以基于一些可执行命令、脚本语言或其他编程语言来实现Mapper和 Reducer,从而充分利用Hadoop并行计算框架的优势和能力,来处理大数据。需要注意的是,Streaming方式是 基于Unix系统的标准输入 输出 来进行MapReduce Job的运行,它区别与Pipes的地方主要是通信协议,Pipes使用的是Socket通信,是对使用C++语言来实现MapReduce Job并通过Socket通信来与Hadopp平台通信,完成Job的执行。 任何支持标准输入输出特性的编程语言都可以使用Streaming方式来实现MapReduce Job,基本原理就是输入从Unix系统标准输入,输出使用Unix系统的标准输出。 2. Hadoop Streaming原理 mapper和reducer会从标准输入中读取用户数据,一行一行处理后发送给标准输出。Streaming工具会创建MapReduce作业,发送给各个tasktracker,同时监控整个作业的执行过程。 如果一个文件(可执行或者脚本)作为mapper,mapper初始化时,每一个mapper任务会把该文件作为一个单独进程启动,mapper任 务运行时

大数据的基础概念

左心房为你撑大大i 提交于 2020-03-28 04:37:23
hadoop:一个分布式系统基础架构, 是一个能够对大量数据进行 分布式处理 的 软件 框架,是一个能够让用户轻松架构和使用的分布式计算平台。 Hadoop 由许多元素构成。其最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS(对于本文)的上一层是 MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。 HDFS :Hadoop 分布式文件系统 (Distributed File System) - HDFS (Hadoop Distributed File System) MapReduce : 并行计算 框架,0.20前使用 org.apache.hadoop.mapred 旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API HBase :类似Google BigTable的分布式NoSQL列数据库。( HBase 和 Avro 已经于2010年5月成为顶级 Apache 项目) Hive :数据仓库工具

如何使用Python为Hadoop编写一个简单的MapReduce程序

邮差的信 提交于 2020-03-28 02:45:25
转载自: http://asfr.blogbus.com/logs/44208067.html 在这个实例中,我将会向大家介绍如何使用Python 为 Hadoop 编写一个简单的 MapReduce 程序。 尽管 Hadoop 框架是使用Java编写的但是我们仍然需要使用像C++、Python等语言来实现 Hadoop 程序。尽管 Hadoop 官方网站给的示例程序是使用Jython编写并打包成Jar文件,这样显然造成了不便,其实,不一定非要这样来实现,我们可以使用Python与 Hadoop 关联进行编程 ,看看位于/src/examples/python/WordCount.py 的例子,你将了解到我在说什么。 我们想要做什么? 我们将编写一个简单的 MapReduce 程序,使用的是C-Python,而不是Jython编写后打包成jar包的程序。 我们的这个例子将模仿 WordCount 并使用Python来实现,例子通过读取文本文件来统计出单词的出现次数。结果也以文本形式输出,每一行包含一个单词和单词出现的次数,两者中间使用制表符来想间隔。 先决条件 编写这个程序之前,你学要架设好 Hadoop 集群,这样才能不会在后期工作抓瞎。如果你没有架设好,那么在后面有个简明教程来教你在Ubuntu Linux 上搭建(同样适用于其他发行版linux、unix)