StreamingQueryException:输入','不匹配,期望<EOF>

时间:2019-10-27 01:37:24

标签: dataframe apache-spark select apache-spark-sql azure-databricks

问题:-当我尝试通过SelectExpr中的参数输入列名称时,出现“输入不匹配',期望为”错误。

这里是上下文:-

我正在尝试使用Merge来实现CDC,类似于下面的代码。

val latestChangeForEachKey = changesDF
  .selectExpr("key", "struct(time, newValue, deleted) as otherCols" )
  .groupBy("key")
  .agg(max("otherCols").as("latest"))
  .selectExpr("key", "latest.*")

参考-https://docs.databricks.com/_static/notebooks/merge-in-cdc.html

我有多个关键字列,为了对其进行参数化,我正在通过一个名为getProperty的自定义函数通过外部属性文件读取它们。并且属性被正确读取。在下面的代码中,keyCols读为==>“ HUP_SEQ_NO”,“ PRODUCT_TYPE”,“ SUBSCRIBER_NO”,“ BAN”。如果我不进行参数化并给出键列的实际值,则代码可以正常工作,但是在对它们进行参数化后,我会收到如下错误:-

预期的输入','不匹配(行1,行12)

== SQL ==

“ HUP_SEQ_NO”,“ PRODUCT_TYPE”,“ SUBSCRIBER_NO”,“ BAN”

------------ ^^^ 我的代码如下:-

val keyCols = tableProp.getProperty("keyCols")

var DF2 = DF1.selectExpr(keyCols,"struct(colA, colB, colC,...)as otherCols").groupBy(keyCols).agg(max("otherCols").as("latest")).selectExpr(keyCols,"latest.*")

我对火花和数据块还很陌生,希望能获得任何指导。

0 个答案:

没有答案