javasparkr的简单介绍
今天给各位分享javasparkr的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
大数据用什么语言?
1、Python语言
Python往往在大数据处理框架中得到支持,但与此同时,它往往又不是“一等公民”。比如说,Spark中的新功能几乎总是出现在Scala/Java绑定的首位,可能需要用PySpark编写面向那些更新版的几个次要版本(对Spark Streaming/MLLib方面的开发工具而言尤为如此)。
与R相反,Python是一种传统的面向对象语言,所以大多数开发人员用起来会相当得心应手,而初次接触R或Scala会让人心生畏惧。一个小问题就是你的代码中需要留出正确的空白处。这将人员分成两大阵营,一派觉得“这非常有助于确保可读性”,另一派则认为,我们应该不需要就因为一行代码有个字符不在适当的位置,就要迫使解释器让程序运行起来。
2、R语言
R语言有着简单而明显的吸引力。使用R语言,只需要短短的几行代码,你就可以在复杂的数据集中筛选,通过先进的建模函数处理数据,以及创建平整的图形来代表数字。它被比喻为是Excel的一个极度活跃版本。
R语言最伟大的资本是已围绕它开发的充满活力的生态系统:R语言社区总是在不断地添加新的软件包和功能到它已经相当丰富的功能集中。据估计,超过200万的人使用R语言,并且最近的一次投票表明,R语言是迄今为止在科学数据中最流行的语言,被61%的受访者使用(其次是Python,39%)。
3、JAVA
Java,以及基于Java的框架,被发现俨然成为了硅谷最大的那些高科技公司的骨骼支架。 “如果你去看Twitter,LinkedIn和Facebook,那么你会发现,Java是它们所有数据工程基础设施的基础语言,”Driscoll说。
debian sparkr怎么配置环境变量
1. SparkR的安装配置
1.1. R与Rstudio的安装
1.1.1. R的安装
我们的工作环境都是在Ubuntu下操作的,所以只介绍Ubuntu下安装R的方法:
1) 在/etc/apt/sources.list添加源
deb precise/,
然后更新源apt-get update;
2) 通过apt-get安装:
sudo apt-get install r-base
1.1.2. Rstudio的安装
官网有详细介绍:
sudo apt-get install gdebi-core
sudo apt-get install libapparmor1 # Required only for Ubuntu, not Debian
wget
sudo gdebi rstudio-server-0.97.551-amd64.deb
1.2. rJava安装
1.2.1. rJava介绍
rJava是一个R语言和Java语言的通信接口,通过底层JNI实现调用,允许在R中直接调用Java的对象和方法。
rJava还提供了Java调用R的功能,是通过JRI(Java/R Interface)实现的。JRI现在已经被嵌入到rJava的包中,我们也可以单独试用这个功能。现在rJava包,已经成为很多基于Java开发R包的基础功能组件。
正是由于rJava是底层接口,并使用JNI作为接口调用,所以效率非常高。在JRI的方案中,JVM通过内存直接加载RVM,调用过程性能几乎无损耗,因此是非常高效连接通道,是R和Java通信的首选开发包。
1.2.2. rJava安装
1) 配置rJava环境
执行R CMD javareconf
root@testnode4:/home/payton# R CMD javareconf
2) 启动R并安装rJava
root@testnode4:/home/payton# R
install.packages("rJava")
1.3. SparkR的安装
1.3.1. SparkR的代码下载
从网页下载代码SparkR-pkg-master.zip
1.3.2. SparkR的代码编译
1) 解压SparkR-pkg-master.zip,然后cd SparkR-pkg-master/
2) 编译的时候需要指明Hadoop版本和Spark版本
SPARK_HADOOP_VERSION=2.4.1 SPARK_VERSION=1.2.0 ./install-dev.sh
至此,单机版的SparkR已经安装完成。
1.3.3. 分布式SparkR的部署配置
1) 编译成功后,会生成一个lib文件夹,进入lib文件夹,打包SparkR为SparkR.tar.gz,这个是分布式SparkR部署的关键。
2) 由打包好的SparkR.tar.gz在各集群节点上安装SparkR
R CMD INSTALL SparkR.tar.gz
至此分布式SparkR搭建完成。
2. SparkR的运行
2.1. SparkR的运行机制
SparkR是AMPLab发布的一个R开发包,为Apache Spark提供了轻量的前端。SparkR提供了Spark中弹性分布式数据集(RDD)的API,用户可以在集群上通过R shell交互性的运行job。SparkR集合了Spark 和R的优势,下面的这3幅图很好的阐释了SparkR的运行机制。
2.2. 用SparkR 进行数据分析
2.2.1. SparkR基本操作
首先介绍下SparkR的基本操作:
第一步,加载SparkR包
library(SparkR)
第二步,初始化Spark context
sc - sparkR.init(master=" spark://localhost:7077"
,sparkEnvir=list(spark.executor.memory="1g",spark.cores.max="10"))
第三步,读入数据,spark的核心是Resilient Distributed Dataset (RDD),RDDS可以从Hadoop的InputFormats来创建(例如,HDFS文件)或通过转化其它RDDS。例如直接从HDFS读取数据为RDD的示例如下:
lines - textFile(sc, "hdfs://sparkR_test.txt")
另外,也可以通过parallelize函数从向量或列表创建RDD,如:
rdd - parallelize(sc, 1:10, 2)
到了这里,那么我们就可以运用RDD的动作(actions)和转换(transformations)来对RDD进行操作并产生新的RDD;也可以很容易地调用R开发包,只需要在集群上执行操作前用includePackage读取R开发包就可以了(例:includePackage(sc, Matrix));当然还可以把RDD转换为R语言格式的数据形式来对它进行操作。
具体可参见如下两个链接:
那么下面我们就通过两个示例来看下 SparkR是如何运行的吧。
2.2.2. SparkR使用举例
1) Example1:word count
# 加载SparkR包
library(SparkR)
# 初始化 Spark context
sc - sparkR.init(master="spark://集群ip:7077"
,sparkEnvir=list(spark.executor.memory="1g",spark.cores.max="10"))
# 从HDFS上读取文件
lines - textFile(sc, "hdfs://集群ip:8020/tmp/sparkR_test.txt")
# 按分隔符拆分每一行为多个元素,这里返回一个序列
words-flatMap(lines,function(line) {strsplit(line,"\\|")[[1]]})
# 使用 lapply 来定义对应每一个RDD元素的运算,这里返回一个(K,V)对
wordCount -lapply(words, function(word) { list(word, 1L) })
# 对(K,V)对进行聚合计算
counts-reduceByKey(wordCount,"+",2L)
# 以数组的形式,返回数据集的所有元素
output - collect(counts)
# 按格式输出结果
for (wordcount in output) {
cat(wordcount[[1]], ": ", wordcount[[2]], "\n")
}
2) Example2:logistic regression
# 加载SparkR包
library(SparkR)
# 初始化 Spark context
sc - sparkR.init(master="集群ip:7077",
appName='sparkr_logistic_regression',
sparkEnvir=list(spark.executor.memory='1g',
spark.cores.max="10"))
# 从hdfs上读取txt文件, 该RDD由spark集群的4个分区构成
input_rdd - textFile(sc,
"hdfs://集群ip:8020/user/payton/german.data-numeric.txt",
minSplits=4)
# 解析每个RDD元素的文本(在每个分区上并行)
dataset_rdd - lapplyPartition(input_rdd, function(part) {
part - lapply(part, function(x) unlist(strsplit(x, '\\s')))
part - lapply(part, function(x) as.numeric(x[x != '']))
part
})
# 我们需要把数据集dataset_rdd分割为训练集(train)和测试集(test)两部分,这里
# ptest为测试集的样本比例,如取ptest=0.2,即取dataset_rdd的20%样本数作为测试
# 集,80%的样本数作为训练集
split_dataset - function(rdd, ptest) {
#以输入样本数ptest比例创建测试集RDD
data_test_rdd - lapplyPartition(rdd, function(part) {
part_test - part[1:(length(part)*ptest)]
part_test
})
# 用剩下的样本数创建训练集RDD
data_train_rdd - lapplyPartition(rdd, function(part) {
part_train - part[((length(part)*ptest)+1):length(part)]
part_train
})
# 返回测试集RDD和训练集RDD的列表
list(data_test_rdd, data_train_rdd)
}
# 接下来我们需要转化数据集为R语言的矩阵形式,并增加一列数字为1的截距项,
# 将输出项y标准化为0/1的形式
get_matrix_rdd - function(rdd) {
matrix_rdd - lapplyPartition(rdd, function(part) {
m - matrix(data=unlist(part, F, F), ncol=25, byrow=T)
m - cbind(1, m)
m[,ncol(m)] - m[,ncol(m)]-1
m
})
matrix_rdd
}
# 由于该训练集中y的值为1与0的样本数比值为7:3,所以我们需要平衡1和0的样本
# 数,使它们的样本数一致
balance_matrix_rdd - function(matrix_rdd) {
balanced_matrix_rdd - lapplyPartition(matrix_rdd, function(part) {
y - part[,26]
index - sample(which(y==0),length(which(y==1)))
index - c(index, which(y==1))
part - part[index,]
part
})
balanced_matrix_rdd
}
# 分割数据集为训练集和测试集
dataset - split_dataset(dataset_rdd, 0.2)
# 创建测试集RDD
matrix_test_rdd - get_matrix_rdd(dataset[[1]])
# 创建训练集RDD
matrix_train_rdd - balance_matrix_rdd(get_matrix_rdd(dataset[[2]]))
# 将训练集RDD和测试集RDD放入spark分布式集群内存中
cache(matrix_test_rdd)
cache(matrix_train_rdd)
# 初始化向量theta
theta- runif(n=25, min = -1, max = 1)
# logistic函数
hypot - function(z) {
1/(1+exp(-z))
}
# 损失函数的梯度计算
gCost - function(t,X,y) {
1/nrow(X)*(t(X)%*%(hypot(X%*%t)-y))
# 定义训练函数
train - function(theta, rdd) {
# 计算梯度
gradient_rdd - lapplyPartition(rdd, function(part) {
X - part[,1:25]
y - part[,26]
p_gradient - gCost(theta,X,y)
list(list(1, p_gradient))
})
agg_gradient_rdd - reduceByKey(gradient_rdd, '+', 1L)
# 一次迭代聚合输出
collect(agg_gradient_rdd)[[1]][[2]]
}
# 由梯度下降算法优化损失函数
# alpha :学习速率
# steps :迭代次数
# tol :收敛精度
alpha - 0.1
tol - 1e-4
step - 1
while(T) {
cat("step: ",step,"\n")
p_gradient - train(theta, matrix_train_rdd)
theta - theta-alpha*p_gradient
gradient - train(theta, matrix_train_rdd)
if(abs(norm(gradient,type="F")-norm(p_gradient,type="F"))=tol) break
step - step+1
}
# 用训练好的模型预测测试集信贷评测结果(“good”或“bad”),并计算预测正确率
test - lapplyPartition(matrix_test_rdd, function(part) {
X - part[,1:25]
y - part[,26]
y_pred - hypot(X%*%theta)
result - xor(as.vector(round(y_pred)),as.vector(y))
})
result-unlist(collect(test))
corrects = length(result[result==F])
wrongs = length(result[result==T])
cat("\ncorrects: ",corrects,"\n")
cat("wrongs: ",wrongs,"\n")
cat("accuracy: ",corrects/length(y_pred),"\n")
大数据学习路线是什么?
主要分为 7 个阶段:入门知识 → Java 基础 → Scala 基础 → Hadoop 技术模块 → Hadoop 项目实战 → Spark 技术模块 → 大数据项目实战。
阶段一:学习入门知识
这一部分主要针对的是新手,在学习之前需要先掌握基本的数据库知识。MySQL 是一个 DBMS(数据库管理系统),是最流行的关系型数据库管理系统(关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据)。
MongoDB 是 IT 行业非常流行的一种非关系型数据库(NoSQL),其灵活的数据存储方式备受当前 IT 从业人员的青睐。
而 Redis 是一个开源、支持网络、基于内存、键值对存储数据库。两者都非常有必要了解。
1、Linux 基础入门(新版)
2、Vim编辑器
3、Git 实战教程
4、MySQL 基础课程
5、MongoDB 基础教程
6、Redis基础教程
阶段二:Java基础
Java 是目前使用最为广泛的编程语言,它具有的众多特性,特别适合作为大数据应用的开发语言。
Java 语言具有功能强大和简单易用两个特征,跨平台应用能力比 C、C++ 更易用,更容易上手。同时还具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。最重要的一点是 Hadoop 是用 Java 编写的。
1、Java编程语言(新版)
2、Java进阶之设计模式
3、J2SE核心开发实战
4、JDK 核心 API
5、JDBC 入门教程
6、Java 8 新特性指南
阶段三:Scala基础
Scala 是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。由于 Scala 运行于 Java 平台(Java 虚拟机),并兼容现有的Java 程序,所以 Scala 可以和大数据相关的基于 JVM 的系统很好的集成。
1、Scala 开发教程
2、Scala 专题教程 - Case Class和模式匹配
3、Scala 专题教程 - 隐式变换和隐式参数
4、Scala 专题教程 - 抽象成员
5、Scala 专题教程 - Extractor
6、Scala 开发二十四点游戏
阶段四:Hadoop技术模块
Hadoop 是一款支持数据密集型分布式应用并以 Apache 2.0 许可协议发布的开源软件框架,它能搭建大型数据仓库,PB 级别数据的存储、处理、分析、统计等业务。编程语言你可以选,但 Hadoop 一定是大数据必学内容。
1、Hadoop入门进阶课程
2、Hadoop部署及管理
3、HBASE 教程
4、Hadoop 分布式文件系统--导入和导出数据
5、使用 Flume 收集数据
阶段五:Hadoop项目实战
当然,学完理论就要进行动手实战了,Hadoop 项目实战可以帮助加深对内容的理解,并锻炼动手能力。
1、Hadoop 图处理--《hadoop应用框架》
阶段六:Spark技术模块
Spark 和 Hadoop 都是大数据框架。Hadoop 提供了 Spark 所没有的功能特性,比如分布式文件系统,而 Spark 为需要它的那些数据集提供了实时内存处理。所以学习 Spark 也非常必要。
1、Spark
2、x 快速入门教程
2、Spark 大数据动手实验
3、Spark 基础之 GraphX 图计算框架学习
4、Spark 基础之 DataFrame 基本概念学习
5、Spark 基础之 DataFrame 高阶应用技巧
6、Spark 基础之 Streaming 快速上手
7、Spark 基础之 SQL 快速上手
8、Spark 基础之使用机器学习库 MLlib
9、Spark 基础之 SparkR 快速上手
10、流式实时日志分析系统--《Spark 最佳实践》
11、使用 Spark 和 D3.js 分析航班大数据
阶段七:大数据项目实战
最后阶段提供了大数据实战项目,这是对常用技能的系统运用,例如使用常用的机器学习进行建模、分析和运算,这是成为大数据工程师过程中的重要一步。
1、Ebay 在线拍卖数据分析
2、流式实时日志分析系统--《Spark 最佳实践》
3、大数据带你挖掘打车的秘籍
4、Twitter数据情感分析
5、使用 Spark 进行流量日志分析
6、Spark流式计算电商商品关注度
7、Spark的模式挖掘-FPGrowth算法
扩展资料:
大数据技术的具体内容:
分布式存储计算架构(强烈推荐:Hadoop)
分布式程序设计(包含:Apache Pig或者Hive)
分布式文件系统(比如:Google GFS)
多种存储模型,主要包含文档,图,键值,时间序列这几种存储模型(比如:BigTable,Apollo, DynamoDB等)
数据收集架构(比如:Kinesis,Kafla)
集成开发环境(比如:R-Studio)
程序开发辅助工具(比如:大量的第三方开发辅助工具)
调度协调架构工具(比如:Apache Aurora)
机器学习(常用的有Apache Mahout 或 H2O)
托管管理(比如:Apache Hadoop Benchmarking)
安全管理(常用的有Gateway)
大数据系统部署(可以看下Apache Ambari)
搜索引擎架构( 学习或者企业都建议使用Lucene搜索引擎)
多种数据库的演变(MySQL/Memcached)
商业智能(大力推荐:Jaspersoft )
数据可视化(这个工具就很多了,可以根据实际需要来选择)
大数据处理算法(10大经典算法)
大数据工程师需要学习哪些?
Java :只要了bai解一些基础即可,做大数据不需要很深的Java 技术,学java SE 就相当于有学习大数据。
Linux:因为大数据相关软件都是在Linux上运行的,所以Linux要学习的扎实一些,学好Linux对你快速掌握大数据相关技术会有很大的帮助,能让你更好的理解hadoop、hive、hbase、spark等大数据软件的运行环境和网络环境配置,能少踩很多坑,学会shell就能看懂脚本这样能更容易理解和配置大数据集群。
Hadoop:这是现在流行的大数据处理平台几乎已经成为大数据的代名词,所以这个是必学的。
Zookeeper:这是个万金油,安装Hadoop的HA的时候就会用到它,以后的Hbase也会用到它。
Mysql:我们学习完大数据的处理了,接下来学习学习小数据的处理工具mysql数据库,因为一会装hive的时候要用到,mysql需要掌握到什么层度那?你能在Linux上把它安装好,运行起来,会配置简单的权限,修改root的密码,创建数据库。
Sqoop:这个是用于把Mysql里的数据导入到Hadoop里的。
Hive:这个东西对于会SQL语法的来说就是神器,它能让你处理大数据变的很简单
Oozie:既然学会Hive了,我相信你一定需要这个东西,它可以帮你管理你的Hive或者MapReduce、Spark脚本,还能检查你的程序是否执行正确。
Hbase:这是Hadoop生态体系中的NOSQL数据库,他的数据是按照key和value的形式存储的并且key是唯一的,所以它能用来做数据的排重,它与MYSQL相比能存储的数据量大很多。
Kafka:这是个比较好用的队列工具。
Spark:它是用来弥补基于MapReduce处理数据速度上的缺点。
请点击输入图片描述
javasparkr的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javasparkr的信息别忘了在本站进行查找喔。