#scala #dataframe #apache-spark #apache-spark-dataset
Вопрос:
У меня есть набор данных ds1 со следующей схемой
root
|-- binary_col1: binary (nullable = true)
которые я трансформирую по мере необходимости, используя
val ds2 = ds1.map(row => row.getAs[Array[Byte]]("binary_col1"))
Но как мне преобразовать набор данных, если он содержит два столбца двоичного типа ?
root
|-- binary_col1: binary (nullable = true)
-- binary_col2: binary (nullable = false)
Я хочу создать новый набор данных с 2 столбцами
( binary_col1.toByteArray , binary_col2.toByteArray)
Ответ №1:
Вы можете использовать as
фрейм данных/набор данных и указать тип tuple2:
val ds2 = ds1.as[(Array[Byte], Array[Byte])]
Это лучше, чем использование map
, потому что оно сохраняет имена столбцов.
Конечно, вы также можете использовать map
, например
val ds2 = ds1.map(row => (row.getAs[Array[Byte]]("binary_col1"), row.getAs[Array[Byte]]("binary_col2")))