Вы можете использовать Spark-SQL и иметь один набор данных для каждого клиента, счетов и товаров. Затем вы можете просто использовать соединения и агрегатные функции между этими наборами данных, чтобы получить желаемый результат.
Spark SQL имеет очень незначительную разницу в производительности между стилем SQL и программным способом.
restrict
говорит, что указатель - это единственная вещь, которая обращается к базовому объекту. Это исключает возможность наложения указателей, обеспечивая лучшую оптимизацию компилятором.
Например, предположим, у меня есть машина со специализированными инструкциями, которая может умножать векторы чисел в памяти, и у меня есть следующий код:
void MultiplyArrays(int* dest, int* src1, int* src2, int n)
{
for(int i = 0; i < n; i++)
{
dest[i] = src1[i]*src2[i];
}
}
Компилятор должен правильно обрабатывать, если dest
, src1
и src2
перекрываются, то есть он должен выполнять по одному умножению за раз, от начала до конца. Имея restrict
, компилятор может оптимизировать этот код с помощью векторных инструкций.
В Википедии есть запись в restrict
, с другим примером, здесь .