Одним из ответов на ваш вопрос является использование оператора .explain
, который выводит на консоль логический и (с расширенным флагом) физический план.
val records = spark.
readStream.
format("rate").
load
scala> records.explain
== Physical Plan ==
StreamingRelation rate, [timestamp#0, value#1L]
scala> records.explain(extended = true)
== Parsed Logical Plan ==
StreamingRelation DataSource(org.apache.spark.sql.SparkSession@4071aa13,rate,List(),None,List(),None,Map(),None), rate, [timestamp#0, value#1L]
== Analyzed Logical Plan ==
timestamp: timestamp, value: bigint
StreamingRelation DataSource(org.apache.spark.sql.SparkSession@4071aa13,rate,List(),None,List(),None,Map(),None), rate, [timestamp#0, value#1L]
== Optimized Logical Plan ==
StreamingRelation DataSource(org.apache.spark.sql.SparkSession@4071aa13,rate,List(),None,List(),None,Map(),None), rate, [timestamp#0, value#1L]
== Physical Plan ==
StreamingRelation rate, [timestamp#0, value#1L]
Физический план - это преобразованиеDAG, так что может быть, это может помочь вам.
Эта ссылка может быть полезна:
https://jaceklaskowski.gitbooks.io/spark-structured-streaming/spark-sql-streaming-Dataset-explain.html