加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 使用SparkSession创建广播变量? Spark 2.0

发布时间:2020-12-16 10:05:51 所属栏目:安全 来源:网络整理
导读:是否可以使用SparkSession提供的sparkContext创建广播变量?我在sc.broadcast下不断收到错误,但是在使用org.apache.spark.SparkContext的SparkContext时,在另一个项目中我没有遇到任何问题. import org.apache.spark.sql.SparkSessionobject MyApp { def mai
是否可以使用SparkSession提供的sparkContext创建广播变量?我在sc.broadcast下不断收到错误,但是在使用org.apache.spark.SparkContext的SparkContext时,在另一个项目中我没有遇到任何问题.

import org.apache.spark.sql.SparkSession


object MyApp {
 def main(args: Array[String]){
  val spark = SparkSession.builder()
       .appName("My App")
       .master("local[*]")
       .getOrCreate()

  val sc = spark.sparkContext
        .setLogLevel("ERROR")

  val path = "C:Boxesgithub-archive2015-03-01-0.json"
  val ghLog = spark.read.json(path)


  val pushes = ghLog.filter("type = 'PushEvent'")

  pushes.printSchema()
  println("All events: "+ ghLog.count)
  println("Only pushes: "+pushes.count)
  pushes.show(5)


  val grouped = pushes.groupBy("actor.login").count()
  grouped.show(5)


  val ordered = grouped.orderBy(grouped("count").desc)
  ordered.show(5)

  import scala.io.Source.fromFile
  val fileName= "ghEmployees.txt"
  val employees = Set() ++ ( 
    for { 
      line <- fromFile(fileName).getLines()
    } yield line.trim
    )


  val bcEmployees = sc.broadcast(employees)
 }
}

或者是使用Set()而不是Seq对象的问题?

谢谢你的帮助

编辑:

我在intellij中不断收到“无法解析符号广播”错误信息

遵守后我得到一个错误:
错误:(47,28)值广播不是Unit的成员
??????val bcEmployees = sc.broadcast(员工)
???????????????????????????^

解决方法

您的sc变量的类型为Unit,因为根据 docs,setLogLevel具有返回类型Unit.改为:

val sc: SparkContext = spark.sparkContext
sc.setLogLevel("ERROR")

跟踪变量类型以便及早发现错误非常重要.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读