开发者社区> 问答> 正文

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

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

展开
收起
游客ahv54x37wvm7u 2021-12-06 22:06:33 394 0
1 条回答
写回答
取消 提交回答
  • 动手实验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进行演示

    2021-12-06 22:20:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载

相关镜像