当我尝试从临时表中选择几列时,我遇到了这个错误。
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”,
我们将不胜感激任何帮助。
谢谢
答案 0 :(得分:0)
表中不存在列名。 select * from cars_tmp
之所以有效,是因为您未指定列名。
请以相同的错误处理方式查看此答案https://stackoverflow.com/a/64042756/8913402。
答案 1 :(得分:0)
我通过在熊猫选择查询中添加每一列来解决了该问题。像这样:
true