У меня есть искра DF с строками Seq[(String, String, String)]
. Я пытаюсь сделать что-то вроде flatMap
с этим, но все, что я делаю, заканчивается броском
java.lang.ClassCastException: org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema нельзя передать в scala.Tuple3
Я могу взять одну строку или несколько строк из DF просто отлично
df.map{ r => r.getSeq[Feature](1)}.first
возвращает
Seq[(String, String, String)] = WrappedArray([ancient,jj,o], [olympia_greece,nn,location] .....
и тип данных RDD кажется правильным.
org.apache.spark.rdd.RDD[Seq[(String, String, String)]]
Схема df
root
|-- article_id: long (nullable = true)
|-- content_processed: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- lemma: string (nullable = true)
| | |-- pos_tag: string (nullable = true)
| | |-- ne_tag: string (nullable = true)
Я знаю, что эта проблема связана с искровым sql, обрабатывающим строки RDD как org.apache.spark.sql.Row
, хотя они идиотически говорят, что это a Seq[(String, String, String)]
. Там есть связанный вопрос (ссылка ниже), но ответ на этот вопрос не работает для меня. Я также недостаточно знаком с искрами, чтобы выяснить, как превратить его в рабочее решение.
Являются ли строки Row[Seq[(String, String, String)]]
или Row[(String, String, String)]
или Seq[Row[(String, String, String)]]
или что-то еще более сумасшедшее.
Я пытаюсь сделать что-то вроде
df.map{ r => r.getSeq[Feature](1)}.map(_(1)._1)
который, похоже, работает, но фактически не работает
df.map{ r => r.getSeq[Feature](1)}.map(_(1)._1).first
выдает указанную выше ошибку. Итак, как я должен (например) получить первый элемент второго кортежа в каждой строке?
Кроме того, WHY имеет искру, предназначенную для этого, кажется, что идиотский утверждает, что что-то имеет один тип, когда на самом деле он не является и не может быть преобразован в заявленный тип.
Связанный вопрос: исключение GenericRowWithSchema при передаче ArrayBuffer в HashSet в DataFrame в RDD из таблицы Hive
Связанный отчет об ошибке: http://search-hadoop.com/m/q3RTt2bvwy19Dxuq1&subj=ClassCastException+when+extracting+and+collecting+DF+array+column+type