Я пытаюсь создать столбец с нулевыми значениями в искре, но НЕ с нулевым типом данных.
Так
sqlContext.sql("select null as newcol from db.table")
Не будет работать, так как для типа данных newcol будет установлено значение null.
sqlContext.sql("select cast(null as newcol as string) from db.table")
Не будет работать, потому что при этом все значения будут "нулевыми" в виде строкового представления из 4 символов.
Как я могу этого добиться?
Конечная цель - записать это в csv, который не поддерживает тип нулевого столбца, и мне нужно, чтобы фактические значения в фрейме данных были нулевыми, а не пустыми строками.
Я думаю, что вам нужен синтаксис:
select cast(null as string) as newcol from db.table
Выражение cast(null as string)
- это просто любое старое выражение, которое могло бы быть намного сложнее. Псевдоним столбца предоставляется с помощью as newcol
, который идет после выражения.
Это просто совпадение, что as
начал использоваться дважды (для разных вещей) в определении newcol
.