Как отобразить содержимое полного столбца в кадре данных Spark?

205

Я использую spark-CSV для загрузки данных в DataFrame. Я хочу сделать простой запрос и отобразить содержимое:

val df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").load("my.csv")
df.registerTempTable("tasks")
results = sqlContext.sql("select col from tasks");
results.show()

Col кажется усеченным:

scala> results.show();
+--------------------+
|                 col|
+--------------------+
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-06 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:21:...|
|2015-11-16 07:21:...|
|2015-11-16 07:21:...|
+--------------------+

Как мне показать полное содержание колонки?

изотопный индикатор
источник

Ответы:

379

results.show(20, false)не будет усекать. Проверьте источник

TomTom101
источник
4
@tracer Буду признателен, если вы примете мой ответ, если он решит вашу проблему. Спасибо!
TomTom101
3
Не OP, но это действительно правильный ответ: небольшая коррекция, логическое значение должно быть False, а не false.
xv70
78
Это будет "False" в python, но "false" в scala / java
drewrobb
4
это ложь (не ложь) в искровой оболочке
Лука Гибелли
6
эквивалент для записи в поток в консольном режимеdataFrame.writeStream.outputMode("append").format("console").option("truncate", "false").start()
JMess
39

Если поставить results.show(false), результаты не будут усечены

Нарендра Пармар
источник
2
Я полагаю, что комментарий к ответу TomTom101 о falseздесь также применим.
Могсдад
1
@ Нарендра Пармар синтаксис должен быть results.show(20, False). Тот, который вы упомянули, выдаст ошибку.
Джай Пракаш
@ Jai Prakash, я дал этот ответ для scala, а ты говоришь о питоне,
Нарендра Пармар
@NarendraParmar извините, вы правы. В scalaобоих вариантах действительны. results.show(false)иresults.show(20, false)
Джай Пракаш
17

Другие решения хороши. Если это ваши цели:

  1. Нет усечения столбцов,
  2. Без потерь строк,
  3. Быстро и
  4. эффективное

Эти две строки полезны ...

    df.persist
    df.show(df.count, false) // in Scala or 'False' in Python

Сохраняя, 2 действия исполнителя, подсчитывать и показывать, становятся более быстрыми и более эффективными при использовании persistили cacheподдержке временной структуры данных в рамках исполнителей. Смотрите больше о сохранении и кеше .

codeaperature
источник
1
Очень хорошо. Спасибо!
Тимбрам
15

Код ниже поможет просмотреть все строки без усечения в каждом столбце.

df.show(df.count(), False)
MoeChen
источник
Тот же вопрос, который я задал предыдущему ответчику: это вызывает dfсбор дважды?
Джавадба
@javadba да, я думаю, count () пройдет через df один раз, а show () соберет df дважды.
МоЧен
10

results.show(20, False)или в results.show(20, false) зависимости от того, работаете ли вы на Java / Scala / Python

Дипак Бабу пиар
источник
3

results.show(false) покажет вам полный контент столбца.

По умолчанию метод показывает ограничение до 20, а добавление числа перед falseотображает больше строк.

Четан Тамбала
источник
2

попробуйте эту команду:

df.show(df.count())
epic_last_song
источник
1
Попробуйте это: df.show (некоторые no) будут работать, но df.show (df.count ()) не будет работать. Df.count дает тип вывода long, который не принимается df.show (), так как он принимает целочисленный тип.
Тота Кранти Кумар
Пример использования df.show (2000). Он извлечет 2000 строк
Тота Кранти Кумар
2
это вызывает dfсбор дважды?
Джавадба
2

results.show(20,false) сделал трюк для меня в Скала.

СКА
источник
1

Внутри Databricks вы можете визуализировать фрейм данных в табличном формате. С помощью команды:

display(results)

Это будет выглядеть

введите описание изображения здесь

Игнасио Алорре
источник
0

Попробуйте это в Scala:

df.show(df.count.toInt, false)

Метод show принимает целое и логическое значение, но df.count возвращает Long ..., поэтому требуется приведение типа

Притеш Кумар
источник
0

В c # Option("truncate", false)не обрезает данные в выводе.

StreamingQuery query = spark
                    .Sql("SELECT * FROM Messages")
                    .WriteStream()
                    .OutputMode("append")
                    .Format("console")
                    .Option("truncate", false)
                    .Start();
Баглай Вячеслав
источник
0

Следующий ответ относится к приложению Spark Streaming.

Установив для параметра «усечение» значение «ложь», вы можете указать выходному приемнику отображать полный столбец.

val query = out.writeStream
          .outputMode(OutputMode.Update())
          .format("console")
          .option("truncate", false)
          .trigger(Trigger.ProcessingTime("5 seconds"))
          .start()
farrellw
источник