2016-02-18 5 views
1

У меня есть dataframe df со следующей схемой:Кастинг всего столбца Спарк Timestamp в Scala

ts:double 
key:long 
val:long 

Я хочу, чтобы преобразовать все ts поля, чтобы зажечь TimeStamp, но без падения любого столбца. Я знаю, как сделать особенную и, то строка:

val new_df = df.select($"ts".cast(TimestampType)) 

Однако new_df имеет только один столбец (как и ожидалось). Я могу присоединиться и сделать, но это, вероятно, не очень хороший подход. Я хотел бы сделать что-то вроде

val new_df = df.map(udf(col("ts")) 

, который будет генерировать new_df с колоннами ts (правильно литыми), ключ и значение.

ответ

1

Все, что вам нужно либо withColumn:

df.withColumn("ts", $"ts".cast(TimestampType)) 

или просто select с *:

df.select($"*", $"ts".cast(TimestampType)) 
Смежные вопросы