AnalysisException:无法解析给定的输入列:
Posted
技术标签:
【中文标题】AnalysisException:无法解析给定的输入列:【英文标题】:AnalysisException: cannot resolve given input columns: 【发布时间】:2020-09-23 19:01:03 【问题描述】:当我尝试从临时表中选择几列时遇到此错误。
pd_df = pd.read_sql('select * from abc.cars limit 10', conn)
df = spark.createDataFrame(pd_df)
df.createOrReplaceTempView("cars_tmp")
df.show()
print('***************')
print("Reading from tmp table")
data = spark.sql('select location_id from cars_tmp')
data.show()
AnalysisException: cannot resolve '`location_id`' given input columns: [cars_tmp.abc.product_id, cars_tmp.abc.location_id ...]
当我选择所有列时,我会得到结果。所以这是成功的:
data = spark.sql('select * from cars_tmp')
data.show()
我尝试了以下查询,但它们也失败并出现相同的错误:
data = spark.sql('select cars_tmp.abc.location_id from cars_tmp')
data.show()
data = spark.sql('select cars_tmp.location_id from cars_tmp')
data.show()
data = spark.sql('select abc.location_id from cars_tmp')
data.show()
我在 datbricks 中运行这些。 Databricks 运行时版本:7.0 Apache Spark 版本:3.0 斯卡拉:2.12
或“spark_version”:“7.0.x-scala2.12”,
我们将不胜感激。
谢谢
【问题讨论】:
你能试试‘cars_tmp.abc.location_id’吗?即用反引号来逃避名称。您也可以尝试 print(data.columns) 来获取名称。 【参考方案1】:表中不存在列名。 select * from cars_tmp
有效,因为您没有指定列名。
请使用相同的错误处理查看此答案https://***.com/a/64042756/8913402。
【讨论】:
【参考方案2】:我通过在熊猫选择查询中添加每一列解决了这个问题。所以是这样的:
pd_df = pd.read_sql('select id, location_id, product_id from abc.cars limit 10', conn)
【讨论】:
以上是关于AnalysisException:无法解析给定的输入列:的主要内容,如果未能解决你的问题,请参考以下文章
org.apache.spark.sql.AnalysisException:无法解析给定的输入列
PYSPARK org.apache.spark.sql.AnalysisException:无法解析给定输入列的“INPUT__FILE__NAME”
org.apache.spark.sql.AnalysisException:给定pyspark中的输入列,无法解析'sub_tot`'
PySpark AnalysisException:无法解析列名