spark整合hdfs:
需求:从hdfs中读取数据,用spark计算,再写到hdfs中。
启动zookeeper;
启动hadoop的hdfs;
然后启动spark(我们这里就不启动高可用集群了,这里只启动一个Master);
向spark集群提交任务;
spark-shell中写的程序仅仅是做实验;
实际开发中,是先在IDE中开发spark程序,然后打包,提交到集群。然后用
脚本或调度框架来调度。
我们这里在spark-shell中写一个spark程序:
读取hdfs中的数据的话,先指定hdfs的地址,你可以将hadoop的两个配置文件hdfs-site.xml和core-site.xml拷贝到spark的conf目录下,但是我们这里因为是测试,所以hdfs的地址写死了:
sc.textFile("hdfs://hadoop01:9000/wc").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).saveAsTextFile("hdfs://hadoop01:9000/wc/out05")
上面的spark-shell只是在测试或者学习的时候常用的方式。
在生产中,一般是在开发工具中开发好程序,然后将程序打成jar包,在提交到spark集群上运行。
需求:从hdfs中读取数据,用spark计算,再写到hdfs中。
启动zookeeper;
启动hadoop的hdfs;
然后启动spark(我们这里就不启动高可用集群了,这里只启动一个Master);
向spark集群提交任务;
spark-shell中写的程序仅仅是做实验;
实际开发中,是先在IDE中开发spark程序,然后打包,提交到集群。然后用
脚本或调度框架来调度。
我们这里在spark-shell中写一个spark程序:
读取hdfs中的数据的话,先指定hdfs的地址,你可以将hadoop的两个配置文件hdfs-site.xml和core-site.xml拷贝到spark的conf目录下,但是我们这里因为是测试,所以hdfs的地址写死了:
sc.textFile("hdfs://hadoop01:9000/wc").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).saveAsTextFile("hdfs://hadoop01:9000/wc/out05")
上面的spark-shell只是在测试或者学习的时候常用的方式。
在生产中,一般是在开发工具中开发好程序,然后将程序打成jar包,在提交到spark集群上运行。