运行Spark程序-在shell中运行 --SparkConf 和 SparkContext

SparkConf 类用于配置 Spark 应用程序的各种参数。通过 SparkConf 类,你可以设置应用程序的名称、运行模式(如本地模式、集群模式)、资源分配(如内存、CPU 核心数)等。主要作用配置应用程序参数:可以设置 Spark 应用程序的各种属性,如应用程序名称、主节点地址等。

SparkContext 是 Spark 应用程序的入口点,它代表了与 Spark 集群的连接。通过 SparkContext,你可以创建 RDD(弹性分布式数据集)、累加器、广播变量等,还可以与外部数据源进行交互。

准备工作:启动hdfs集群,打开hadoop100:9870,在wcinput目录下上传一个包含很多个单词的文本文件。

写交互式代码:启动之后在spark-shell中写代码。

 进入环境:spark-shell --master yarn

逐句写代码:

// 读取文件,得到RDD
    val rdd1 = sc.textFile("hdfs://hadoop100:8020/wcinput/words.txt")
    // 将单词进行切割,得到一个存储全部单词的RDD
    val rdd2= fileRDD.flatMap(line => line.split(" "))
    // 将单词转换为元组对象,key是单词,value是数字1
    val rdd3= wordsRDD.map(word => (word, 1))
    // 将元组的value按照key来分组,对所有的value执行聚合操作(相加)
    val rdd4= wordsWithOneRDD.reduceByKey((a, b) => a + b)
    // 收集RDD的数据并打印输出结果
    rdd4.collect().foreach(println)

### 解决 Spark-Shell 无响应问题 Spark-Shell 是一种交互式的 Scala REPL(Read-Eval-Print Loop),它允许用户通过命令行界面与 Apache Spark 进行交互。当遇到 Spark-Shell 无响应的情况时,可能的原因涉及资源分配不足、配置错误或其他环境因素。 以下是可能导致此问题的一些常见原因及其解决方案: #### 资源不足 如果主机内存交换频繁发生,则可能是由于操作系统虚拟内存设置不当或可用物理内存不足引起的[^2]。这种情况下可以尝试以下方法来优化: - 减少 `vm.swappiness` 参数值以降低磁盘交换频率。 - 增加主机上的物理 RAM 容量。 - 配置健康测试阈值窗口大小参数 (`Host Memory Swapping Thresholds`, `Host Memory Swapping Check Window`) 来监控并调整系统行为。 #### Executor 故障 在 Spark 中,Executor 是集群中的节点之一,负责执行作业的一个分区(即数据块)。如果某个 Executor 失败或者无法正常工作,可能会导致整个应用程序停滞不前[^1]。因此需要确认是否有任何 Executors 报错日志,并采取相应措施修复它们。 #### 社区支持与文档查阅 对于像 PayPal 这样特定领域内的应用需求来说,深入理解其独特社区背景非常重要[^3]。这有助于找到针对该平台定制化版本中存在的潜在 bug 或者性能瓶颈所在之处。 最后附上一段简单的代码用于启动 spark shell 并提交一个小任务作为验证是否恢复正常运行状态的例子: ```scala // 启动 Spark Shell 并加载默认配置文件 val conf = new org.apache.spark.SparkConf().setAppName("TestApp").setMaster("local[*]") val sc = new org.apache.spark.SparkContext(conf) // 创建 RDD 简单操作 val data = Array(1, 2, 3, 4, 5) val distData = sc.parallelize(data) println(distData.reduce((a,b)=>a+b)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值