Как я могу красиво напечатать упакованный массив в 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)
Что приводит к: