我正在尝试在创建新文件后立即从目录中的文件读取数据。实时"File 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)

错误消息非常清楚,您需要在 Spark conf objet 中设置应用程序名称。

取代

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

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

建议阅读官方 Spark 编程指南

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,或者一个特殊的 在本地模式下运行的"本地"字符串。

在线文档有很多示例可供入门。

干杯!

最新更新