왜 이런 일이 발생하는지 잘 모르겠습니다. PySpark에서 두 개의 데이터 프레임을 읽고 열 이름을 출력했는데 예상대로 였지만 SQL 결합시에는 입력이있는 경우 열 이름을 확인할 수없는 오류가 발생합니다. 병합 작업을 단순화했습니다. 그러나 더 많은 조인 조건을 추가해야합니다. SQL을 사용하는 이유입니다 ("and b.mnvr_bgn < a.idx_trip_id 및 b.mnvr_end> a.idx_trip_data "). AnalysisException : 그것은 열 'DEVICE_ID'이 DF mnvr_temp_idx_prev_tempSparkSQL에서 열 이름을 확인할 수 없습니다. join
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')
역 추적 (가장 최근 통화 마지막)에서 '_col7'로 이름이 변경되고 있음을 표시 u는 "해결할 수없는 주어진 입력 열을 'b.device_id' : [_col7, trip_id, device_id, mnvr_end, mnvr_bgn, idx_trip_end]; line 1 pos 237 "
도움을 주시면 감사하겠습니다.
전체 코드를 게시하십시오 –
내 전체 코드가 약 1000 줄이므로 실제로 옵션이 아닙니다 – Amber
SQL 문 대신 Join 용 DataFrames를 사용해 보셨습니까? 차이가별로 없지만 같은 문제가 데이터 프레임에서도 발생하는지 알고 싶습니다. – dheee