我目前正在学习火花流媒体。一旦创建了新文件,我就试图从目录中的文件中读取数据。实时"文件流"。我收到以下错误。有谁能建议我解决方案?
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)
答案 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,或者是特殊的 “本地”字符串以本地模式运行。
在线文档有许多示例可供使用。
干杯!