我正在阅读Spark 2.0中的CSV文件,并使用以下命令计数列中的非空值:
val df = spark.read.option("header", "true").csv(dir)
df.filter("IncidntNum is not null").count()
,当我使用spark-shell测试它时,它工作得很好。当我创建一个包含代码的jar文件并将其提交给spark-submit时,我在上面的第二行看到了一个异常:
Exception in thread "main" org.apache.spark.sql.catalyst.parser.ParseException:
extraneous input '' expecting {'(', 'SELECT', ..
== SQL ==
IncidntNum is not null
^^^
at org.apache.spark.sql.catalyst.parser.ParseException.withCommand(ParseDriver.scala:197)
你知道为什么当我使用spark-shell的代码时会发生这种情况吗?
这个问题已经被搁置了一段时间,但迟做总比不做好。
我能想到的最可能的原因是,当使用spark-submit运行时,您是在"集群"模式下运行的。这意味着驱动程序进程将位于与运行spark-shell时不同的机器上。这可能导致Spark读取不同的文件。