【发布时间】: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) 来获取名称。
标签: pyspark apache-spark-sql azure-databricks