Лучший способ чтения данных из SQL и преобразования в матрицу N x N и умножения на матрицу N x 1 для сохранения результата - PullRequest
0 голосов
/ 05 мая 2019

Я должен умножить разреженную матрицу 1mill x 10k на матрицу 10k x 1 в Scala оба набора данных находятся в sql.

Я хотел бы знать, является ли scala подходящим выбором для реализации решения. Это нужно выполнить менее чем за минуту.

У меня есть таблица sql 1 формата:

user,col1,val1
1,"A",10.1
1,"B",14.7
2,"A",5.1
2,"C",9.5

И у меня есть таблица ввода 2

col1,val2
"A", 100.1
"B", 110.2
"C", 57.6

Мне нужно преобразовать таблицу 1 в таблицу форматов 3:

user "A" "B" "C"
1,10.1,14.7,0
2,5.1,0,9.5

И умножьте его на матрицу столбца val2 таблицы 2 как матрицу 2 x 3 (P) в матрицу 3 x 1 (Q). P, как ожидается, будет разреженным и находится в диапазоне 1mill x 10k, а Q будет 10k x 1

Я хотел бы знать, является ли scala подходящим выбором для реализации решения. Это нужно выполнить менее чем за минуту. До сих пор я сделал следующее: Считать данные из sql для таблицы 1.

val df_table1 = spark.read.jdbc(url=url,table = "table_1",properties = connectionProperties)

Затем повернул его к

val df_table3 = df_table1.groupBy("user").pivot("col1").agg(first("val1")).na.fill(0)

Я также прочитал таблицу 2 как фрейм данных.

Теперь я хочу преобразовать их в матрицу разреженных / строк, умножить их и записать результат обратно в MySQL, как я могу это сделать?

...