как преобразовать каждый столбец фрейма данных из двоичного в байтовый массив

#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")))