Для входа Dataframe
намерение состоит в том, чтобы генерировать только половину само декартового произведения. Учитывая, что декартово произведение приводит к симметричной матрице, нам действительно нужно вычислить либо верхнюю, либо нижнюю треугольную часть выше (соответственно ниже) диагонали, которая установлена в нули:
Фрейм данных crossjoin
:
val df3 = df2.crossJoin(df2)
сгенерирует FULL - который мы не хотим.
Учитывая, что матрица подобия симметрична единицам по диагонали, нам не нужно вычислять верхнюю половину или саму диагональ - как показано в НИЖЕ DiagO ниже:
Любые предложения о том, как получить результат с наименьшими вычислениями?