小问题可能存在大问题,希望大神帮忙解答。Spark本地运行模式中单线程与多线程问题之setMaster("local")可以运行,但是设置成setMaster("local[3]")或setMaste

小问题可能存在大问题,希望大神帮忙解答

求大神帮忙解决同样的代码

setMaster("local")可以运行,但是设置成setMaster("local[3]")或setMaster("local[*]")则报错

一、Spark中本地运行模式

Spark中本地运行模式有3种,如下

(1)local 模式:本地单线程运行;
(2)local[k]模式:本地K个线程运行;
(3)local[*]模式:用本地尽可能多的线程运行。

二、读取的数据如下


三、牵扯数组越界代码如下

 val pieces = line.replaceAll("\"" , "")
      val carid = pieces.split(',')(0)
      val lngstr = pieces.split(',')(1)
      val latstr = pieces.split(',')(2)

      var lng=BigDecimal(0)
      var lat=BigDecimal(0)

      try {
        lng = myround(BigDecimal(lngstr), 3)
        lat = myround(BigDecimal(latstr), 3)
      }catch {
        case e: NumberFormatException => println(".....help......"+lngstr+"....."+latstr)
      }
如果是读取的文件数据脏,读取的原始数据就没有前3列的值,然后导致根据逗号分割后,数组越界,导致数组越界, 那为啥Master为local的时候可以允许呢?

四、遇到的local、local[k]、local[*]问题

      Spark 中Master初始化如下:

val sparkConf = new SparkConf().setMaster("local").setAppName("count test")

问题描述如下:

    代码其他部门没有改动,只是改变setMaster(),则出现不同结果:</

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值