Согласно новым документам Spark, используя Spark's should be preferred over using JdbcRDD
.Apache Spark DataFrame нет Разделение RDD
Первое касание было довольно приятным, пока я не столкнулся с первой проблемой - DataFrame
не имеет метода flatMapToPair()
. Первым делом было преобразовать его в JavaRDD
, и я сделал это.
Все было прекрасно, я написал код, используя этот подход, и заметил, что такой код:
JavaRDD<Row> myRDD = dataFrame.toJavaRDD();
int amount = myRDD.partitions().length
производит 1
. Весь код ниже такого преобразования до JavaRDD
абсолютно неэффективен. Перераспределение сил RDD занимает много времени и делает большие накладные расходы, чем код, который работает с 1 разделом.
Как с этим бороться?
При использовании JdbcRDD
мы написали специальный SQL с «пейджером», например WHERE id >= ? and id <= ?
, который использовался для создания разделов. Как сделать что-то подобное с помощью DataFrame
?