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