Scala spark streaming-在一个流中创建tmp视图,并在另一个流中使用
我尝试运行2个数据流,在第一个数据流中生成Dataframe,将df注册为tmp视图,然后在另一个数据流中使用它,如下所示:Scala spark streaming-在一个流中创建tmp视图,并在另一个流中使用,scala,apache-spark,spark-streaming,spark-dataframe,Scala,Apache Spark,Spark Streaming,Spark Dataframe,我尝试运行2个数据流,在第一个数据流中生成Dataframe,将df注册为tmp视图,然后在另一个数据流中使用它,如下所示: dstream1.foreachRDD { rdd => import org.apache.spark.sql._ val spark = SparkSession.builder.config(rdd.sparkContext.getConf).getOrCreate import spark.implicits._ import spark.s
dstream1.foreachRDD { rdd =>
import org.apache.spark.sql._
val spark = SparkSession.builder.config(rdd.sparkContext.getConf).getOrCreate
import spark.implicits._
import spark.sql
val records = rdd.toDF("record")
records.createOrReplaceTempView("records")
}
dstream2.foreachRDD { rdd =>
import org.apache.spark.sql._
val spark = SparkSession.builder.config(rdd.sparkContext.getConf).getOrCreate
import spark.implicits._
import spark.sql
val records2 = rdd.toDF("record2")
val oldRecord = spark.table("records")
records2.join(oldRecod).write.json(...)
}
streamingContext.remember(Seconds(60))
streamingContext.start()
streamingContext.awaitTermination()
我不断得到一个org.apache.spark.sql.catalyst.analysis.NoSuchTableException
所以很明显我做的不对
有没有办法做到这一点
谢谢 这确实奏效了,
问题是,当在本地测试时,您需要留下额外的核心进行计算,然后从流中获取数据
我使用master=local[2],因此每个核心都用于处理每个流,而非left则用于执行其他任何操作。
一旦我把它改为master=local[4],它就工作得很好