Scala: Como obter um intervalo de linhas em um dataframe
eu tenho umDataFrame
criado executandosqlContext.read
de um arquivo de parquet.
oDataFrame
consiste em 300 M. linhas. Preciso usar essas linhas como entrada para outra função, mas quero fazê-lo em lotes menores para evitar erros de OOM.
Atualmente, estou usandodf.head(1000000)
para ler as primeiras linhas de 1 milhão, mas não consigo encontrar uma maneira de ler as linhas subseqüentes. eu tenteidf.collect()
, mas isso gera um erro do Java OOM.
Eu quero iterar sobre esse quadro de dados. Tentei adicionar outra coluna com a API withColumn () para gerar um conjunto exclusivo de valores para iterar, mas nenhuma das colunas existentes no dataframe possui apenas valores únicos.
Por exemplo, eu tentei valdf = df1.withColumn("newColumn", df1("col") + 1)
assim comoval df = df1.withColumn("newColumn",lit(i+=1))
, os quais não retornam um conjunto seqüencial de valores.
Qualquer outra maneira de obter as primeiras n linhas de um quadro de dados e as próximas n linhas, algo que funciona como uma função de intervalo deSqlContext
?