Spark Core:第一章 Spark Shell

    xiaoxiao2025-04-26  24

    Spark Core:第一章 spark shell


    文章目录

    Spark Core:第一章 spark shell一、关于spark-shell二、启动spark-shell三、spark-shell中编写WordCount程序1. 启动HDFS2. 上传文件到HDFS3. spark-shell中编写程序4. hdfs命令查看结果 四、IDEA中编写WordCount程序![在这里插入图片描述](https://img-blog.csdnimg.cn/20190529110630273.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5Mzk0MjY0,size_16,color_FFFFFF,t_70)1. 配置maven配置文件2. 编写程序3. 打包上传4. 启动HDFS和spark集群5. spark命令提交任务6. 查看程序执行结果 五、出现的问题Q1: WARN HiveConf: HiveConf of name hive.server2.thrift.client.user does not exist


    —>Spark知识点总结导航<—


    一、关于spark-shell

      spark-shell是spark自带的交互式shell程序,方便用户进行交互式编程,用户可以在该命令行下用scala编写spark程序。


    二、启动spark-shell

      开启HDFS和spark集群 ~/software/spark/bin/spark-shell (如果不成功请参考文末的Q1)

    注意: 如果启动spark shell时没有指定master地址,但是也可以正常启动spark shell和执行spark shell中的程序,其实是启动了spark的cluster模式,如果spark是单节点,并且没有指定slave文件,这个时候如果打开spark-shell 默认是local模式Local模式是master和worker在同同一进程内Cluster模式是master和worker在不同进程内

    三、spark-shell中编写WordCount程序

    1. 启动HDFS

    2. 上传文件到HDFS

    3. spark-shell中编写程序

    sc.textFile("hdfs://Cloud00:9000/RELEASE").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://Cloud00:9000/out")

    说明:sc是SparkContext对象,该对象时提交spark程序的入口textFile(hdfs://Cloud01:9000/RELEASE)是hdfs中读取数据flatMap(_.split(" "))先map再压平map((_,1))将单词和1构成元组reduceByKey(+)按照key进行reduce,并将value累加saveAsTextFile(“hdfs:// Cloud01:9000/out”)将结果写入到hdfs中

    4. hdfs命令查看结果

    hdfs dfs -cat hdfs://Cloud00:9000/out/p*


    四、IDEA中编写WordCount程序

    1. 配置maven配置文件

    <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.1.1</version> </dependency>

    2. 编写程序

    package com.spark.core import org.apache.spark.{SparkConf, SparkContext} object WordCount { def main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster("local").setAppName("wordcount") val sc = new SparkContext(conf) //读取输入文件 val line = sc.textFile("hdfs://Cloud00:9000/RELEASE") //按空格分割 val value = line.flatMap(_.split(" ")) //单词从1开始计数 val word = value.map((_, 1)) //对结果聚合 val count = word.reduceByKey(_ + _) //保存输出文件格式和路径 count.saveAsTextFile("/home/duck/sparkout") } }

    3. 打包上传

    4. 启动HDFS和spark集群

    请查看hdfs启动、spark集群启动

    5. spark命令提交任务

    bin/spark-submit \ --class com.spark.core.WordCount \ /home/duck/Lesson-1.0-SNAPSHOT.jar

    6. 查看程序执行结果


    五、出现的问题

    Q1: WARN HiveConf: HiveConf of name hive.server2.thrift.client.user does not exist

    (1) 描述

    (2) 原因:找不到元数据路径

    (3) 解决:   拷贝hive的配置文件hive-site.xml到spark/conf下

    sudo cp ~/software/hive/conf/hive-site.xml /

      开启元数据监听

    hive --service metastore&


    --->有问题请联系QQ1436281495^_^
    最新回复(0)