簡體   English   中英

無法解析列名Spark

[英]Unable to resolve Column Name Spark

我創建了2個數據框,如下所示:

df_flights = spark1.read.parquet('domestic-flights\\flights.parquet')
df_airport_codes = spark1.read.load('domestic-flights\\flights.csv',format="csv",sep=",",inferSchema=True,header=True)

然后,我引用了databricks指南以免出現重復的列https://docs.databricks.com/spark/latest/faq/join-two-dataframes-duplicated-column.html

df3=df_flights.join(df_airport_codes,"origin_airport_code", 'left')

當我嘗試按兩個數據幀中的任何列進行排序時,我仍然遇到相同的錯誤

Py4JJavaError: An error occurred while calling o1553.filter.

:org.apache.spark.sql.AnalysisException:引用'passengers'是不明確的,可能是:乘客,乘客。

或者,如果我嘗試排序:

df3.sort('passengers')

Py4JJavaError: An error occurred while calling o1553.sort.: org.apache.spark.sql.AnalysisException: cannot resolve '`passengers`' given input columns: [flights, destination_population, origin_city, distance, passengers, seats, flights, origin_population, passengers, flight_datetime, origin_air_port_code, flight_year, seats, origin_city, destination_city, destination_city, destination_airport_code, destination_airport_code, origin_population, destination_population, flight_month, distance];;

問題是,我的加入邏輯是否有錯誤? 如果不是,我該如何為歧義列做別名?

您的加入沒有錯誤。 兩個數據框具有相同的列,因此您得到的數據框包含不明確的列名稱。

這就是為什么按乘客分類會產生異常的原因。 您需要按適當的別名排序。

df3.sort(df_flights.passengers)

或首先選擇適當的列並排序。 喜歡

df3.select(df_flights.passengers, df.origin_city, ......).sort("passengers").show()

在某種意義上,您需要在火花操作之前保持唯一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM