Spark Scala - java.util.NoSuchElementException e limpeza de dados

Eu tive umproblema semelhante antes, mas estou procurando uma resposta generalizável. estou usandofaísca-corenlp para obter pontuações de sentimentos em e-mails. Às vezes, sentiment () trava em alguma entrada (talvez seja muito longo, talvez tenha um caractere inesperado). Não me diz que trava em algumas instâncias e apenas retorna oColumn sentiment('email). Assim, quando eu tentoshow() além de um certo ponto ousave() meu quadro de dados, recebo umajava.util.NoSuchElementException Porquesentiment() deve ter retornado nada nessa linha.

Meu código inicial está carregando os dados e aplicandosentiment() como mostrado emspark-corenlp API.

       val customSchema = StructType(Array(
                        StructField("contactId", StringType, true),
                        StructField("email", StringType, true))
                        )

// Load dataframe   
val df = sqlContext.read
                        .format("com.databricks.spark.csv")
                        .option("delimiter","\t")          // Delimiter is tab
                        .option("parserLib", "UNIVOCITY")  // Parser, which deals better with the email formatting
                        .schema(customSchema)              // Schema of the table
                        .load("emails")                        // Input file


    val sent = df.select('contactId, sentiment('email).as('sentiment)) // Add sentiment analysis output to dataframe

Tentei filtrar valores nulos e NaN:

val sentFiltered = sent.filter('sentiment.isNotNull)
                .filter(!'sentiment.isNaN)
                .filter(col("sentiment").between(0,4))

Eu até tentei fazê-lo via consulta SQL:

sent.registerTempTable("sent")
val test = sqlContext.sql("SELECT * FROM sent WHERE sentiment IS NOT NULL")

Não sei que entrada está causando a falha do spark-corenlp. Como posso descobrir? Senão, como posso filtrar esses valores inexistentes de col ("sentiment")? Ou então, devo tentar capturar a exceção e ignorar a linha? Isso é possível?

questionAnswers(0)

yourAnswerToTheQuestion