我不確定爲什麼會發生這種情況。在PySpark中,我讀了兩個數據框並列出了它們的列名,並且它們與預期的一樣,但是,當執行SQL連接時,出現無法解析列名的錯誤。我簡化了合併來實現它,但是我需要添加更多的連接條件,這就是我使用SQL的原因(將添加到:「and b.mnvr_bgn < a.idx_trip_id and b.mnvr_end> a.idx_trip_data「)。看來,列「DEVICE_ID」被更名爲「_col7」在DF mnvr_temp_idx_prev_temp列名無法在SparkSQL中解析加入
mnvr_temp_idx_prev = mnvr_3.select('device_id', 'mnvr_bgn', 'mnvr_end')
print mnvr_temp_idx_prev.columns
['device_id', 'mnvr_bgn', 'mnvr_end']
raw_data_filtered = raw_data.select('device_id', 'trip_id', 'idx').groupby('device_id', 'trip_id').agg(F.max('idx').alias('idx_trip_end'))
print raw_data_filtered.columns
['device_id', 'trip_id', 'idx_trip_end']
raw_data_filtered.registerTempTable('raw_data_filtered_temp')
mnvr_temp_idx_prev.registerTempTable('mnvr_temp_idx_prev_temp')
test = sqlContext.sql('SELECT a.device_id, a.idx_trip_end, b.mnvr_bgn, b.mnvr_end \
FROM raw_data_filtered_temp as a \
INNER JOIN mnvr_temp_idx_prev_temp as b \
ON a.device_id = b.device_id')
回溯(最近通話最後一個):AnalysisException:U「無法解析‘b.device_id’給定的輸入欄:[_col7,trip_id,device_id,mnvr_end,mnvr_bgn,idx_trip_end];第1行pos 237「
任何幫助表示讚賞!
請發佈您的完整代碼 –
我的整個代碼大約有1000行,因此這不是一個真正的選項 – Amber
您是否嘗試將DataFrame用於Join而不是sql語句?沒有什麼區別,但是想知道Dataframes中是否也存在相同的問題。 – dheee