Scala Spark Streaming不解析数据
我有一个非常简单的火花流工作,我创建了使用Jupyter,我无法得到工作。我想知道是否有人能告诉我这里可能出了什么问题Scala Spark Streaming不解析数据,scala,apache-spark,spark-streaming,Scala,Apache Spark,Spark Streaming,我有一个非常简单的火花流工作,我创建了使用Jupyter,我无法得到工作。我想知道是否有人能告诉我这里可能出了什么问题 import org.apache.spark.streaming.{Seconds, StreamingContext} import scala.util.control.Exception.allCatch import java.sql.Timestamp import org.apache.spark.SparkConf def parseDouble(s: Str
import org.apache.spark.streaming.{Seconds, StreamingContext}
import scala.util.control.Exception.allCatch
import java.sql.Timestamp
import org.apache.spark.SparkConf
def parseDouble(s: String): Double = try { s.toDouble } catch { case _ => 0.00 }
def isDoubleNumber(s: String): Boolean = (allCatch opt s.toDouble).isDefined
case class ProcessDataStream(Timestamp: String, TimezoneOffset: String, SystemGuid: String, TagName: String, NumericValue: String , StringValue: String)
以下代码中的问题,我可以在my_rdd_raw
中看到数据,但不能在my_rdd
// Create the streaming context
val ssc = new StreamingContext(sc, Seconds(10))
val csvLines = ssc.textFileStream("wasb://container@storage.blob.core.windows.net/")
csvLines.window(Seconds(60), Seconds(10)).foreachRDD(rdd=> {
rdd.toDF().registerTempTable("my_rdd_raw")
val processDataStream = rdd.map(s => s.split(",")).filter(
s => s(0) != "Timestamp" && isDoubleNumber(s(4)) ).map(
s => ProcessDataStream(s(0),
s(1),
s(2),
s(3),
s(4),
s(5)))
val streamDF = processDataStream.toDF()
streamDF.registerTempTable("my_rdd")
}
)
ssc.start()
下面的代码给出了预期的结果
val data = sqlContext.sql("select * from my_rdd_raw")
data.collect().foreach(println)
[2016-04-19 20:26:01.0299,+05:30,ecc84966-9bc0-4bef-9cd2-ad79c25be278,test001,178.03499442294,,Good]
[2016-04-19 20:26:02.0303,+05:30,ecc84966-9bc0-4bef-9cd2-ad79c25be278,test001,160.205223861246,,Good]
但是对my_rdd
的查询表明表不存在。有人能指出我代码中的错误吗
编辑1
我确实在这方面取得了一些进展,并发现如果我删除以下行
.filter(s=>s(0)!=“Timestamp”和&isDoubleNumber(s(4))
这是预期的工作。那么,流处理的工作方式是否不同于正常的批处理作业