安装idea,跑scala程序,下载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_26566137/article/details/82080367

参考:http://www.cnblogs.com/zlslch/p/5880926.html
下载Hadoop:E:\software\Spark\spark-2.3.1-bin-hadoop2.7\spark-2.3.1-bin-hadoop2.7

解压tgz文件,下载7zip提取成tgz文件(tar压缩),再解压;

按参考教程运行WordCount.scala的程序;
报这个错:
windows idea Failed to locate the winutils binary in the hadoop binary path java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

参考教程定位问题的方法:
https://blog.csdn.net/woshixuye/article/details/53461975

分析问题
打开源码,查看getQualifiedBinPath方法

解决方案:

exeFile不存在会报错,也就是fullExeName不存在。即windows中没有配置HADOOP_HOME。

3 解决问题
配置环境变量E:\Program Files\hadoop-2.7.0重启电脑。或者代码中设置System.setProperty(“hadoop.home.dir”, “E:\Program Files\hadoop-2.7.0”);还有一种可能HADOOP_HOME的bin目录下根本没有winutils.exe,下载地址https://github.com/srccodes/hadoop-common-2.2.0-bin

要跑scala程序:
安装java 1.8
安装scala
安装idea
安装Hadoop
每一个步骤都有设置

【没有assembly目录】spark2.0.0启动时无法访问spark-assembly-*.jar的解决办法

但是spark升级到spark2以后,原有lib目录下的大JAR包被分散成多个小JAR包,原来的spark-assembly-*.jar已经不存在,所以hive没有办法找到这个JAR包。

扫描二维码关注公众号,回复: 3164767 查看本文章

参考:
https://blog.csdn.net/dax1n/article/details/58197361

package com.zhouls.spark

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import java.lang.System


object WordCount {
  System.setProperty("hadoop.home.dir", "E:\\software\\Spark\\spark-2.3.1-bin-hadoop2.7\\spark-2.3.1-bin-hadoop2.7")
  def main(args: Array[String]): Unit = {
    /*
     * 第1步:创建spark的配置对象sparkconf,设置spark程序的运行时的配置信息,
     * 例如说通过setMaster来设置程序要链接的spark集群的master的URL,如果设置为local,则代表spark程序在本地运行,
     * 特别适合于机器配置条件非常差(例如只有1G内存)的初学者
     */
    val conf = new SparkConf()//创建SparkConf对象
    conf.setAppName("Wow,My First Spark App!")//设置应用程序的名称,在程序运行的监控界面可以看到名称
    conf.setMaster("local")//此时,程序在本地运行,不需要安装spark集群

    /*
     * 第2步:创建SparkContext对象
     * SparkContext是spark程序所有功能的唯一入口,无论是采用scala、java、pthon、R等都必须有一个SparkContext
     * SparkContext核心作用:初始化spark应用程序运行所需要的核心组件、包括DAGScheduler、TaskScheduler、SchedulerBackend
     * 同时还会负责spark程序往master注册程序等
     * SparkContext是整个spark应用程序中最为至关重要的一个对象
     */
    val sc = new SparkContext(conf)

    /*
     * 第3步:根据具体的数据源(HDFS、HBase、Local FS、DB、S3等)通过SparkContext来创建RDD
     * RDD的创建基本有三种方式:根据外部的数据来源(如HDFS)、根据Scala集合、由其它的RDD操作数据会被RDD划分成
     * 一系列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴
     */
    // val lines:RDD[String] = sc.textFile("D://SoftWare//spark-1.6.2-bin-hadoop2.6//README.md", 1)//path指的是文件路径,minPartitions指的是最小并行度
    val lines = sc.textFile("E://software//Spark//spark-2.3.1-bin-hadoop2.7//spark-2.3.1-bin-hadoop2.7//README.md", 1)//path指的是文件路径,minPartitions指的是最小并行度

    /*
     * 第4步:对初始的RDD进行Transformation级别的处理,例如map、filter等高阶函数等的编程,来进行具体的数据计算
     *  第4.1步:将每一行的字符串拆分成单个的单词
     */
    val words = lines.flatMap{ line => line.split(" ")}//对每一行的字符串进行单词拆分并把所有行的拆分结果通过flat合并成为一个

    /*
    * 4.2步:在单词拆分的基础上对每个单词实例计数为1,也就是 word => (word,1)
    */
    val pairs = words.map { word => (word,1) }

    /*
     * 4.3步:在每个单词实例计数为1基础之上统计每个单词在文件中出现的总次数
     */
    val wordCounts =  pairs.reduceByKey(_+_)//对相同的key,进行value的累计(包括local和reducer级别同时reduce)
    wordCounts.foreach(wordNumberPair => println(wordNumberPair._1 + ":" + wordNumberPair._2))

    /*
     * 第5步
     */
    sc.stop();
  }

猜你喜欢

转载自blog.csdn.net/sinat_26566137/article/details/82080367