本文目录一览:
- 1、spark怎么连接linux上的hdfs
- 2、如何使spark默认支持解析csv文件
- 3、Linux里面spark作用是什么?
- 4、在linux上如何配置spark环境,在linux上安装scala和spark老是失败
spark怎么连接linux上的hdfs
默认是从hdfs读取文件spark存储csv文件到linux服务器,也可以指定sc.textFile("路径").在路径前面加上hdfs://表示从hdfs文件系统上读
本地文件读取 sc.textFile("路径").在路径前面加上file:// 表示从本地文件系统读spark存储csv文件到linux服务器,如
如何使spark默认支持解析csv文件
动手实验Apache Spark的最好方式是使用交互式Shell命令行,Spark目前有Python Shell和Scala Shell两种交互式命令行。
可以从 这里下载Apache Spark,下载时选择最近预编译好的版本以便能够立即运行shell。
目前最新的Apache Spark版本是1.5.0,发布时间是2015年9月9日。
tar -xvzf ~/spark-1.5.0-bin-hadoop2.4.tgz
运行Python Shell
cd spark-1.5.0-bin-hadoop2.4
./bin/pyspark
在本节中不会使用Python Shell进行演示。
Scala交互式命令行由于运行在JVM上,能够使用java库。
运行Scala Shell
cd spark-1.5.0-bin-hadoop2.4
./bin/spark-shell
执行完上述命令行,你可以看到下列输出:
Scala Shell欢迎信息
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 1.5.0
/_/
Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_25)
Type in expressions to have them evaluated.
Type :help for more information.
15/08/24 21:58:29 INFO SparkContext: Running Spark version 1.5.0
下面是一些简单的练习以便帮助使用shell。也许你现在不能理解我们做的是什么,但在后面我们会对此进行详细分析。在Scala Shell中,执行下列操作:
在Spark中使用README 文件创建textFileRDD
val textFile = sc.textFile("README.md")
获取textFile RDD的第一个元素
textFile.first()
res3: String = # Apache Spark
对textFile RDD中的数据进行过滤操作,返回所有包含“Spark”关键字的行,操作完成后会返回一个新的RDD,操作完成后可以对返回的RDD的行进行计数
筛选出包括Spark关键字的RDD然后进行行计数
val linesWithSpark = textFile.filter(line = line.contains("Spark"))
linesWithSpark.count()
res10: Long = 19
要找出RDD linesWithSpark单词出现最多的行,可以使用下列操作。使用map方法,将RDD中的各行映射成一个数,然后再使用reduce方法找出包含单词数最多的行。
找出RDD textFile 中包含单词数最多的行
textFile.map(line = line.split(" ").size)
.reduce((a, b) = if (a b) a else b)
res11: Int = 14
返回结果表明第14行单词数最多。
也可以引入其它java包,例如 Math.max()方法,因为map和reduce方法接受scala函数字面量作为参数。
在scala shell中引入Java方法
import java.lang.Math
textFile.map(line = line.split(" ").size)
.reduce((a, b) = Math.max(a, b))
res12: Int = 14
我们可以很容易地将数据缓存到内存当中。
将RDD linesWithSpark 缓存,然后进行行计数
linesWithSpark.cache()
res13: linesWithSpark.type =
MapPartitionsRDD[8] at filter at console:23
linesWithSpark.count()
res15: Long = 19
上面简要地给大家演示的了如何使用Spark交互式命令行。
弹性分布式数据集(RDDs)
Spark在集群中可以并行地执行任务,并行度由Spark中的主要组件之一——RDD决定。弹性分布式数据集(Resilient distributed data, RDD)是一种数据表示方式,RDD中的数据被分区存储在集群中(碎片化的数据存储方式),正是由于数据的分区存储使得任务可以并行执行。分区数量越多,并行越高。下图给出了RDD的表示:
Display- Edit
想像每列均为一个分区(partition ),你可以非常方便地将分区数据分配给集群中的各个节点。
为创建RDD,可以从外部存储中读取数据,例如从Cassandra、Amazon简单存储服务(Amazon Simple Storage Service)、HDFS或其它Hadoop支持的输入数据格式中读取。也可以通过读取文件、数组或JSON格式的数据来创建RDD。另一方面,如果对于应用来说,数据是本地化的,此时你仅需要使用parallelize方法便可以将Spark的特性作用于相应数据,并通过Apache Spark集群对数据进行并行化分析。为验证这一点,我们使用Scala Spark Shell进行演示
Linux里面spark作用是什么?
Spark是通用数据处理引擎,适用于多种情况。 应用程序开发人员和数据科学家将Spark集成到他们的应用程序中,以快速地大规模查询,分析和转换数据。 与Spark最频繁相关的任务包括跨大型数据集的交互式查询,来自传感器或金融系统的流数据处理以及机器学习任务。
Spark于2009年开始运作,最初是加州大学伯克利分校AMPLab内部的一个项目。 更具体地说,它是出于证明Mesos概念的需要而诞生的,Mesos概念也是在AMPLab中创建的。 在Mesos白皮书《 Mesos:数据中心中的细粒度资源共享平台》中首次讨论了Spark,其中最著名的作者是Benjamin Hindman和Matei Zaharia。
2013年,Spark成为Apache Software Foundation的孵化项目,并于2014年初被提升为该基金会的顶级项目之一。 Spark是基金会管理的最活跃的项目之一,围绕该项目成长的社区包括多产的个人贡献者和资金雄厚的企业支持者,例如Databricks,IBM和中国的华为。
从一开始,Spark就被优化为在内存中运行。 它比Hadoop的MapReduce等替代方法更快地处理数据,后者倾向于在处理的每个阶段之间向计算机硬盘写入数据或从计算机硬盘写入数据。 Spark的支持者声称,Spark在内存中的运行速度可以比Hadoop MapReduce快100倍,并且在以类似于Hadoop MapReduce本身的方式处理基于磁盘的数据时也可以快10倍。 这种比较并不完全公平,这不仅是因为原始速度对Spark的典型用例而言比对批处理更为重要,在这种情况下,类似于MapReduce的解决方案仍然很出色。
在linux上如何配置spark环境,在linux上安装scala和spark老是失败
方法/步骤
首先你的机器安装spark存储csv文件到linux服务器了jdkspark存储csv文件到linux服务器,我的新机器spark存储csv文件到linux服务器,所以早上刚在centos上折腾了jdk,没有的也可以去参考下
下载安装包
scala-2.11.4.tgz
spark-1.2.0-bin-hadoop2.4.tgz
后面的包忘了之前哪找的了,需要的可以私我。将包传到服务器,解压
tar zxvf scala-2.11.4.tgz
tar zxvf spark-1.2.0-bin-hadoop2.4.tgz
配置环境变量
vim /etc/profile
加上以下对应内容spark存储csv文件到linux服务器:
export JAVA_HOME=/home/yy/jdk1.8
export SCALA_HOME=/home/yy/scala
export SPARK_HOME=/home/yy/spark-1.2.0-bin-hadoop2.4
export PATH=$PATH:$JAVA_HOME/bin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin
执行source /etc/profile使配置生效
修改spark配置
进入spark-1.2.0-bin-hadoop2.4/conf
复制模板文件:
cp spark-env.sh.template spark-env.sh
cp slaves.template slaves
编辑spark-env.sh
添加上你的对应信息:
export JAVA_HOME=/home/yy/jdk1.8
export SCALA_HOME=/home/yy/scala
export SPARK_MASTER_IP=172.20.0.204
export SPARK_WORKER_MEMORY=2g
export HADOOP_CONF_DIR=/home/yy/spark-1.2.0-bin-hadoop2.4/conf
编辑slaves
添加上你的对应信息,所有的集群的机器:
172.20.0.204
172.20.0.205
到此为止,前面所有的安装配置动作,在你的另一个机器上(所有的slave机器)同样的做一遍,即我这里的205机器
进入spark-1.2.0-bin-hadoop2.4/sbin/目录
执行:./start-all.sh
如果没有设置ssh免密码登陆,会要求输入密码
这时候jps查看多了个master和worker
浏览器查看集群信息
master地址+8080端口
启动Running Applications
在bin目录下执行:
MASTER=spark://172.20.0.204:7077 ./spark-shell
这时候就可以看到运行的app啦
同时可以查看jobs内容
slave机器上也运行app,这时候就可以看到运行的applications有两个啦。
好了,环境就算先搭起来啦,后面就是去调用吧。