Вот мой код:
Код: Выделить всё
import pyspark.sql.functions as f
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
df = spark.createDataFrame(
[
(1, 101),
(2, 102),
(3, 103)
], schema="id int, channel_id int"
)
df.show()
Код: Выделить всё
+---+----------+
| id|channel_id|
+---+----------+
| 1| 101|
| 2| 102|
| 3| 103|
+---+----------+
Код: Выделить всё
df.withColumns(
{
"CHANNEL_ID": f.when(f.col("channel_id") == 101, "First channel")
.when(f.col("channel_id") == 102, "Second channel")
.otherwise("-")
}
).drop("channel_id").show()
Код: Выделить всё
+---+
| id|
+---+
| 1|
| 2|
| 3|
+---+
Почему столбец CHANNEL_ID удаляется, хотя я пытаюсь удалить Channel_id? Похоже, что имя CHANNEL_ID в верхнем регистре каким-то образом мешает методу drop. Если я переименую столбец во что-то другое (например, Channel_alias), он будет работать нормально.
Связано ли такое поведение с чувствительностью к регистру или конфликтами имен в PySpark? Будем признательны за любые разъяснения или предложения по решению этой проблемы!
Подробнее здесь: https://stackoverflow.com/questions/790 ... expectedly
Мобильная версия