вы можете сначала сэмплировать разделы, а затем сэмплы из разделов.Таким образом, вам не нужно полное сканирование таблицы, но она работает только в том случае, если само разбиение является случайным.AFAIK, вам нужно использовать RDD API для этого.Это может выглядеть так (введите числа, соответствующие желаемому количеству образцов):
val ds : Dataset[String] = ???
val dsSampled = ds.rdd
// take 1000 samples from every 10th partition
.mapPartitionsWithIndex{case (i,rows) => if(i%10==0) scala.util.Random.shuffle(rows).take(1000) else Iterator.empty}
.toDS()