Я работаю в spark и, чтобы использовать класс Matrix
библиотеки Jama
, мне нужно преобразовать содержимое spark.sql.DataFrame
в двумерный массив, т. Е. Array[Array[Double]]
.
Хотя я нашел довольно много решений о том, как преобразовать один столбец кадра данных в массив, я не понимаю, как
- преобразует весь фрейм данных в 2D-массив (то есть массив массивов);
- при этом переводит его содержимое из long в Double.
Причина в том, что мне нужно загрузить содержимое кадра данных в матрицу Jama, для которой в качестве входных данных требуется двумерный массив значений типа Double:
val matrix_transport = new Matrix(df_transport)
<console>:83: error: type mismatch;
found : org.apache.spark.sql.DataFrame
(which expands to) org.apache.spark.sql.Dataset[org.apache.spark.sql.Row]
required: Array[Array[Double]]
val matrix_transport = new Matrix(df_transport)
EDIT: для полноты схемы df:
df_transport.printSchema
root
|-- 1_51501_19962: long (nullable = true)
|-- 1_51501_26708: long (nullable = true)
|-- 1_51501_36708: long (nullable = true)
|-- 1_51501_6708: long (nullable = true)
...
с 165 столбцами идентичного типа long
.