无法解析给定的输入列



我有一个Spark程序,从CSV文件中读取并将它们加载到dataframe中。加载后,我使用SparkSQL操作它们。

当运行我的Spark作业时,它失败并给我以下异常:

org.apache.spark.sql。AnalysisException:无法解析给定输入列["alpha", "beta", "gamma", "delta", "action"]的' action '

当SparkSQL尝试解析以下内容时,会抛出上面的异常:

SELECT *, 
  IF(action = 'A', 1, 0) a_count,
  IF(action = 'B', 1, 0) b_count,
  IF(action = 'C', 1, 0) c_count,
  IF(action = 'D', 1, 0) d_count,
  IF(action = 'E', 1, 0) e_count
FROM my_table

此代码在更新到Spark 2.0之前运行良好。有人知道是什么导致了这个问题吗?

编辑:我正在使用Databricks CSV解析器加载CSV文件:
sqlContext.read().format("csv")
    .option("header", "false")
    .option("inferSchema", "false")
    .option("parserLib", "univocity")
    .load(pathToLoad);

尝试在您的选择中添加反引号。

SELECT *, 
  IF(`action` = 'A', 1, 0) a_count,
  IF(`action` = 'B', 1, 0) b_count,
  IF(`action` = 'C', 1, 0) c_count,
  IF(`action` = 'D', 1, 0) d_count,
  IF(`action` = 'E', 1, 0) e_count
FROM my_table

在Spark 2.0中已添加内置CSV支持,请尝试如下:

spark.read.format("csv").option("header","false").load("../path_to_file/file.csv")
spark.read.option("header", "false").csv("../path_to_file/file.csv")

我在集群中使用2.0,而代码是2.3,我面临着同样的问题,我通过在运行时使用适当的spark版本来摆脱它。

相关内容

  • 没有找到相关文章

最新更新