Как выполнить запрос разбивки на страницу
Кто-нибудь, как сделать разбиение на страницы в искровом 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
Надеюсь, это поможет!