这个问题在这里已有答案:

有没有办法在Spark SQL中查询不存在的列?我通过spark-streaming获得了JSON列表,然后,我想将这个jsons转换为临时表 . 所以我可以使用SQL来查询这些 . 我在下面得到一张tmp表:

SparkSession ss = SparkSession.builder().config(sparkConf).getOrCreate();
Dataset<Row> rdd = ss.read().json(rdd);
rdd.registerTempTable("tmp_table");

这个表的结构是'username,passwr,uid,kid'但是当我使用SQL查询时:

ss.sql("select * from tmp_table where xxx=1");

“xxx”是不在此表的列中的列 .

我该怎么办呢?当列不存在但我没有得到任何结果但没有这样的错误:

线程“main”中的异常org.apache.spark.sql.AnalysisException:无法解析给定输入列的'xxx'

因为我不知道哪个列存在,直到我真正使用这个数据,我不能为它指定修复列,我之前只得到它的SQL条件 .

此外,我想配置这个SQL条件,但不是在我的代码中写入它 . 我只是想在列不存在时得到“无结果”的结果,或者当列不存在时得到“无结果或此列为空等等”的结果 .

谢谢你的决议 .