Vì vậy, như tôi biết trong Spark Dataframe, cho nhiều cột có thể có cùng tên như được hiển thị trong ảnh chụp nhanh khung dữ liệu bên dưới:
[
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0})),
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=125231, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0047, 3: 0.0, 4: 0.0043})),
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=145831, f=SparseVector(5, {0: 0.0, 1: 0.2356, 2: 0.0036, 3: 0.0, 4: 0.4132})),
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=147031, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0})),
Row(a=107831, f=SparseVector(5, {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}), a=149231, f=SparseVector(5, {0: 0.0, 1: 0.0032, 2: 0.2451, 3: 0.0, 4: 0.0042}))
]
Kết quả trên được tạo bằng cách nối với khung dữ liệu với chính nó, bạn có thể thấy có 4
các cột có cả hai a
và f
.
Vấn đề là ở đó khi tôi cố gắng thực hiện nhiều phép tính hơn với a
cột, tôi không thể tìm cách chọn a
, tôi đã thử df[0]
và df.select('a')
cả hai đều trả lại cho tôi thông báo lỗi bên dưới:
AnalysisException: Reference 'a' is ambiguous, could be: a#1333L, a#1335L.
Có cách nào trong Spark API mà tôi có thể phân biệt lại các cột với các tên trùng lặp không? hoặc có thể một số cách để cho phép tôi thay đổi tên cột?