永发信息网

如何使spark默认支持解析csv文件

答案:1  悬赏:0  手机版
解决时间 2021-03-07 12:11
如何使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 :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进行演示
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
温婉意思是什么
秀华苑地址在哪,我要去那里办事
用植物来形容爸爸、妈妈、姐姐和我
为什么男的喜欢在早上发消息说情话
左边一个大写的风 右边一个肖念什么
北京,有房,想贷款买车
佰草集日月精华用了没啥效果,专柜销售告诉我
录制视频回放开始有很大噪音,想知道就我的这
阳光视界地址在哪,我要去那里办事
分镜头脚本怎么写
关于1元2次方程的问题?y=ax²+bx+c1——
快走30分钟消耗多少热量
谁有爱奇艺vip破解版?
我坐火车去北京要进京证吗
21世纪不动产温州欧洲城加盟店地址在哪,我要
推荐资讯
dondup翻译中文怎么说?
用什么方法把小猫引出来
韩国女团被称为猪肉荣的是谁
lim x→1^-(lnx)ln(1-x)
下列关于酶及激素的叙述中,不正确的是A. 激
电脑没有网络 然后诊断之后说诊断策略服务未
在电脑上加好友手也能看见对方在线 为什么手
cad导入PS后颜色很淡怎么办
由若干个同样大小的正方体拼成的一个大正方体
青年军官先看看适不适合考研,考研不是出路只
请问珍珠鸟多少钱一只?
艾灸后身上有烟味,怎么去除
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?