【问题标题】:Creating a broadcast variable with SparkSession ? Spark 2.0使用 SparkSession 创建广播变量?火花2.0
【发布时间】:2016-12-16 00:52:56
【问题描述】:

是否可以使用 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:\\Boxes\\github-archive\\2015-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(employees) ^

【问题讨论】:

  • 错误是什么?除非我们知道出了什么问题,否则我们无能为力
  • @evan058 我在 intellij 中不断收到“无法解析符号广播”错误消息
  • 在遵守之后我得到一个错误:错误:(47, 28) value broadcast is not a member of Unit val bcEmployees = sc.broadcast(employees) ^
  • 在下面查看我的答案

标签: scala apache-spark apache-spark-sql spark-dataframe


【解决方案1】:

您的sc 变量的类型为Unit,因为根据docssetLogLevel 的返回类型为Unit。改为这样做:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 2017-02-13
    • 2021-01-08
    • 1970-01-01
    • 2016-01-27
    • 2015-11-08
    • 1970-01-01
    相关资源
    最近更新 更多