Как выполнить запрос разбивки на страницу

Кто-нибудь, как сделать разбиение на страницы в искровом sql-запросе?

Мне нужно использовать искру sql, но не знаю, как сделать разбиение на страницы.

Пробовал:

select * from person limit 10, 10

Ответ 1

ответ karthik не удастся, если в кадре данных есть повторяющиеся строки. 'except' удалит все строки в df1, которые находятся в df2.

val filteredRdd = df.rdd.zipWithIndex().collect { case (r, i) if 10 >= start && i <=20 => r }
val newDf = sqlContext.createDataFrame(filteredRdd, df.schema)

Ответ 2

В настоящее время нет поддержки для смещения в искровом sql. Один из альтернатив, который вы можете использовать для подкачки, - DataFrames с помощью метода except.

Пример. Вы хотите выполнить итерацию с пределом пейджинга 10, вы можете сделать следующее:

    DataFrame df1;
    long count = df.count();
    int limit = 10;
    while(count > 0){
        df1 = df.limit(limit);
        df1.show();            //will print 10, next 10, etc rows
        df = df.except(df1);
        count = count - limit;
    }

Если вы хотите сказать, LIMIT 50, 100 в первый раз, вы можете сделать следующее:

        df1 = df.limit(50);
        df2 = df.except(df1);
        df2.limit(100);       //required result

Надеюсь, это поможет!