您好,登录后才能下订单哦!
这篇文章主要讲解了“spark初始化怎么配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“spark初始化怎么配置”吧!
1. 在较高层次上,每个spark应用程序包含一个驱动程序,去调用用户的main函数,在集群上执行各种并行操作。spark主要的抽象,是提供了RDD数据类型。RDD数据类型是一组分割在集群上可以被并行操作的元素集合。RDD可以通过HDFS上的文件,驱动程序已有的集合,或对已有的RDD进行变换来创建。用户也可以将RDD持久化,保存在内存中,以被有效的重用。RDD也将自动从失败中恢复。spark的第二个抽象是可以被并行操作的共享变量。默认情况下,spark运行函数时,将在不同的节点上启动独立的任务。spark支持2类共享变量,广播变量,在每一个节点上保存一个值,累积变量支持累加操作。
2. spark初始化
spark应用程序首先应该创建JavaSparkContext对象
SparkConf conf = new SparkConf().setAppName(appName).setMaster(master); JavaSparkContext sc = new JavaSparkContext(conf);
appname设置显示在集群UI上应用程序名,master是YARN集群的URL,或者字符串"local"表示运行本地模式。若采用spark-submit命令提交jar包,可由--master选项指定。
3. 创建RDD
RDD可以通过parallelizing一个驱动程序中已存在的集合,或者引用一个外部存储系统,如HDFS,HBase创建
List<Integer> data = Arrays.asList(1, 2, 3, 4, 5); JavaRDD<Integer> distData = sc.parallelize(data, 20);
集合并行化的一个重要参数就是份数(slices),每一份数据将对应一个任务,spark默认会根据集群自动确定份数。
JavaRDD<String> distFile = sc.textFile("data.txt", 20);
如果文件名是本地文件系统,那么需要在所有工作节点的相同目录下拷贝一份数据,或者采用网络共享文件系统。所有的spark文件输入方法也支持目录,压缩文件,通配符。默认情况下一个分块(block)将对应一份(slice)。除了文本文件,spark还支持其它数据格式,如:JavaSparkContext.wholeTextFiles,SequenceFiles。
4. RDD操作支持两种,变换(transformation)根据已经存在的数据集产生一个新的数据集,动作(action)在RDD上运行计算并向驱动程序返回一个值。例如:map就是一个transformation,将所有的数据元素通过一个函数,结果返回一个新的RDD,reduce就是一个action,采用某个函数聚合所有元素,向驱动程序返回一个结果。所有的transformation操作在调用后,并不会立即执行,只有当某个action需要向驱动程序返回一个结果时,才执行。这样设计使得spark效率更高,例如在需要将一个RDD通过一个map,然后再使用reduce返回一个结果,这时就只需要向驱动程序返回reduce的结果,而不是更大的map后的数据集。默认RDD是不会一直存在于内存当中的,我们可以调用persist或cache方法持久化,也支持将RDD持久化入硬盘,或者备份到多个节点。
5. RDD transformation方法
map(T -> U) filter(T -> Boolean) flatMap(T -> Iterator<U>) mapPartitions(Iterator<T> -> Iterator<U>)
mapPartitionsWithIndex((int,Iterator<T>) -> Iterator<U>) ...
感谢各位的阅读,以上就是“spark初始化怎么配置”的内容了,经过本文的学习后,相信大家对spark初始化怎么配置这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。