Как я могу красиво напечатать упакованный массив в Zeppelin/Spark/Scala?

В этом вопросе мне рассказали, как напечатать кадр данных с помощью команды zeppelin z.show. Это работает хорошо, за исключением того, что WrappedArray появляется в столбце леммы:

Я попробовал это:

z.show(dfLemma.select(concat_ws(",", $"lemma")))

но он просто дал мне список слов, не отформатированных, и я также хочу, чтобы в моем выводе была колонка расистов. Буду признателен за любую оказанную помощь.

1 ответ

Решение

Вот предложение по форматированию столбца массива:

import org.apache.spark.sql.Column
import org.apache.spark.sql.functions._
import sqlContext.implicits._

val df = Seq(
  (1, Array("An", "Array")), (2, Array("Another", "Array"))
).toDF("first", "second")

def formatArrayColumn(arrayColumn: Column): Column = {
  concat(lit("["), concat_ws(", ", arrayColumn), lit("]")).as(s"format(${arrayColumn.expr})")
}

val result = df.withColumn("second", formatArrayColumn($"second"))

z.show(result)

Что приводит к:

Другие вопросы по тегам