一旦创建了新文件,我就试图从目录中的文件中读取数据。实时"文件流"

时间:2017-08-29 14:53:24

标签: apache-spark spark-streaming

我目前正在学习火花流媒体。一旦创建了新文件,我就试图从目录中的文件中读取数据。实时"文件流"。我收到以下错误。有谁能建议我解决方案?

import org.apache.spark.SparkContext._
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Seconds, StreamingContext}

object FileStreaming {
    def main(args:Array[String]): Unit = {
        val conf = new SparkConf().setMaster("local[2]")
        val ssc = new StreamingContext(conf, Seconds(10))
        val lines = ssc.textFileStream("C:\\Users\\PRAGI V\\Desktop\\data-
        master\\data-master\\cards")
        lines.flatMap(x => x.split(" ")).map(x => (x, 1)).print()
        ssc.start()
        ssc.awaitTermination()
    }
}

错误:

Exception in thread "main" org.apache.spark.SparkException: An application 
name must be set in your configuration     
at org.apache.spark.SparkContext. <init>(SparkContext.scala:170)
at org.apache.spark.streaming.StreamingContext$.createNewSparkContext(StreamingContext.scala:555)
at org.apache.spark.streaming.StreamingContext.<init>
(StreamingContext.scala:75)
at FileStreaming$.main(FileStreaming.scala:15)
at FileStreaming.main(FileStreaming.scala)

2 个答案:

答案 0 :(得分:0)

错误信息非常清楚,您需要在spark conf objet中设置应用名称。

替换

val conf = new SparkConf().setMaster("local[2]”)

val conf = new SparkConf().setMaster("local[2]”).setAppName(“MyApp")

答案 1 :(得分:0)

建议阅读官方Spark Programming Guide

Spark程序必须做的第一件事是创建一个SparkContext对象,它告诉Spark如何访问集群。每个JVM只能激活一个SparkContext。您必须在创建新的SparkContext之前停止()活动的SparkContext。

val conf = new SparkConf().setAppName(appName).setMaster(master)
new SparkContext(conf)
  

appName参数是应用程序在其上显示的名称   集群UI。 master是Spark,Mesos或YARN集群URL,或者是特殊的   “本地”字符串以本地模式运行。

在线文档有许多示例可供使用。

干杯!