Как отобразить содержимое полного столбца в кадре данных 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)не будет усекать. Проверьте источник


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поддержке временной структуры данных в рамках исполнителей. Смотрите больше о сохранении и кеше .


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

15

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

df.show(df.count(), False)

Тот же вопрос, который я задал предыдущему ответчику: это вызывает dfсбор дважды?
Джавадба

@javadba да, я думаю, count () пройдет через df один раз, а show () соберет df дважды.
МоЧен


3

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

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


2

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

df.show(df.count())

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

Пример использования df.show (2000). Он извлечет 2000 строк
Тота Кранти Кумар

2
это вызывает dfсбор дважды?
Джавадба




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()
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.