2016-12-15 50 views
3

是否可以使用SparkSession提供的sparkContext創建廣播變量?我不斷收到sc.broadcast下的錯誤,但是在使用org.apache.spark.SparkContext中的SparkContext的時候,我不會遇到任何問題。使用SparkSession創建廣播變量? Spark 2.0

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)價值廣播不是單位的成員 val bcEmployees = sc.broadcast(employees) ^

+0

什麼是錯誤?我們不能幫助,除非我們知道什麼是錯的 –

+0

@ evan058在intellij – ukbaz

+0

中我收到一個「無法解析符號廣播」的錯誤信息後出現錯誤: 錯誤:(47,28)值的廣播不是成員單位 val bcEmployees = sc.broadcast(employees) ^ – ukbaz

回答

5

您的sc變量的類型爲Unit,因爲根據docs,setLogLevel返回類型Unit。做到這一點,而不是:

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

保持類型的變量的軌道及早發現錯誤,是很重要的。

+0

很好,非常感謝 – ukbaz

相關問題