Spark Scala - java.util.NoSuchElementException & Data Cleaning

He tenido unproblema similar antes, pero estoy buscando una respuesta generalizable. estoy usandospark-corenlp para obtener puntajes de Sentimiento en correos electrónicos. A veces, sentiment () se bloquea en alguna entrada (tal vez es demasiado larga, tal vez tuvo un carácter inesperado). No me dice que se bloquea en algunos casos, y solo devuelve elColumn sentiment('email). Por lo tanto, cuando trato deshow() más allá de cierto punto osave() mi marco de datos, obtengo unjava.util.NoSuchElementException porquesentiment() debe haber devuelto nada en esa fila.

Mi código inicial es cargar los datos y aplicarsentiment() como se muestra enspark-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

Traté de filtrar valores nulos y NaN:

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

Incluso intenté hacerlo a través de una consulta SQL:

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

No sé qué entrada está causando el accidente de spark-corenlp. ¿Cómo puedo averiguarlo? De lo contrario, ¿cómo puedo filtrar estos valores no existentes de col ("sentimiento")? O bien, ¿debería intentar atrapar la excepción e ignorar la fila? ¿Es esto posible?

Respuestas a la pregunta(0)

Su respuesta a la pregunta