[英]How to do writeStream a dataframe in console? (Scala Spark Streaming)
[英]How to apply filters on spark scala dataframe view?
我在此处粘贴了一个片段,其中我遇到了 BigQuery Read 的问题。 “wherePart”有更多的记录,因此 BQ 调用被一次又一次地调用。 将过滤器保持在 BQ Read 之外会有所帮助。 这个想法是,首先从 BQ 读取“mainTable”,将其存储在 spark 视图中,然后将“wherePart”过滤器应用于 spark 中的该视图。 [ “subDate”是一个 function,用于从一个日期中减去另一个日期并返回两者之间的天数]
val Df = getFb(config, mainTable, ds)
def getFb(config: DataFrame, mainTable: String, ds: String) : DataFrame = {
val fb = config.map(row => Target.Pfb(
row.getAs[String]("m1"),
row.getAs[String]("m2"),
row.getAs[Seq[Int]]("days")))
.collect
val wherePart = fb.map(x => (x.m1, x.m2, subDate(ds, x.days.max - 1))).
map(x => s"(idata_${x._1} = '${x._2}' AND ds BETWEEN '${x._3}' AND '${ds}')").
mkString(" OR ")
val q = new Q()
val tempView = "tempView"
spark.readBigQueryTable(mainTable, wherePart).createOrReplaceTempView(tempView)
val Df = q.mainTableLogs(tempView)
Df
}
有人可以在这里帮助我吗?
您使用的是spark-bigquery-connector吗? 如果是这样,正确的语法是
spark.read.format("bigquery")
.load(mainTable)
.where(wherePart)
.createOrReplaceTempView(tempView)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.