spark常见操作系列(2)--spark读写hadoop

本文探讨了Spark读写Hadoop的常见操作,包括Scala与Java方式的对比,重点介绍了DataFrame的使用和优化策略。通过示例代码展示了如何高效地处理CSV文件,并提出在开发中遇到的问题,如如何利用集群资源、字段动态读写、减少Action操作次数以及在不同场景下选择合适的数据处理方式。

真正开发大数据之前,本人折腾过hadoop,spark组件,其中把之前公司的日志放到hadoop 和hive里面去读写.但实际上,真正开发spark程序,遇到的坑,是十分多的.

本篇主要介绍spark读写hadoop.hadoop的读写,有java方式,也有scala方式.
虽scala可以嵌入java代码,并不意味着直接把java 操作工具类放到scala程序就行了.
hadoop 一般放的都是文件,我们的是csv文件.读取csv,然后对其中的行列数据做计算,生成新的列数据.
这里用的scala 版本是2.11.7.

spark 内置一些读写及计算api,也就是transformation 和 action操作.
比如读取List:

val testList : List[String] = List[String]("1223","123","3435")
val sc : SparkContext =  sparkSeesion.sparkContext
val rddtest = sc.makeRDD(testList)
rddtest.foreach(x=>println(x))
//
val rdd2 = rdd.map(x => x.toString())
//map里面有函数
val rdd3 = rdd.map(x=>ComputeDate(x.toString()))

spark api 的精华是transformation 操作,这几十个transformation 函数,会将数据在集群内存里面做各种转换以满足需求,效率非常高.
最后生成的结果数据才转到driver端,而这是在action操作之后执行的.
本人理解,这可能是spark效率比hadoop的mapreduce高的地方.spark将数据分成许多分片,而这些分片可以同时执行,虽然如此,数据的前后顺序,在内部,却是有序的.

spark读取csv代码还是比较简洁的:

val conf = new SparkConf().setAppName("ReadCsvFile").setMaster("spark://10.0.0.1:7077").set("spark.driver.host","10.0.0.1").setJars(Seq(""))
    val sc = new SparkContext(conf)
    val inputFile =  sc.textFile("hdfs://10.0.0.1:9000/res/csvFile.csv").cache()

这里,Seq(“”) 里面要加载该项目程序编译处理的jar包:
D:\IdeaProjects\scalaProject03\out\artifacts\scalaProject03\scalaProject03.jar

还可以使用df方式:

val spark = SparkSession.builder.master("local[1]").appName("Spark CSV Reader").getOrCreate;
    val df = spark.read
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值