Spark 데이터 프레임에 전체 열 내용을 표시하는 방법은 무엇입니까?


203

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()

열이 잘린 것 같습니다.

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:...|
+--------------------+

열의 전체 내용을 표시하려면 어떻게합니까?

답변:


377

results.show(20, false)잘리지 않습니다. 소스 확인


4
@tracer 문제를 해결하면 주어진 대답을 받아들이면 감사하겠습니다. 감사!
TomTom101

3
OP는 아니지만 실제로 정답입니다. 경미한 교정, 부울은 거짓이 아닌 거짓이어야합니다.
xv70

78
파이썬에서는 "거짓"이지만 스칼라 / 자바에서는 "거짓"
drewrobb

4
그것은 스파크 - 쉘 (거짓되지 않음) 거짓
루카 Gibelli

6
콘솔 모드에서 스트림에 쓰는 것과 동등한 내용은dataFrame.writeStream.outputMode("append").format("console").option("truncate", "false").start()
JMess

39

를 입력 results.show(false)하면 결과가 잘리지 않습니다


2
나는 상상 TomTom101의 대답에 댓글 에 대한 false도 여기에 적용됩니다.
Mogsdad

1
@Narendra Parmar 구문은 다음과 같아야합니다 results.show(20, False). 당신이 언급 한 것은 오류를 줄 것입니다.
Jai Prakash

@ Jai Prakash, 나는 scala에 대해이 답변을 주었고 파이썬에 대해 이야기하고 있습니다.
Narendra Parmar

@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

지속함으로써, 실행기 내에서 중간 기본 데이터 프레임 구조를 사용 persist하거나 cache유지하기 위해 2 개의 실행기 동작 (카운트 및 표시)이 더 빠르고 효율적 입니다. 더 알아보기지속 및 캐시 .


1
아주 좋아요 감사!
timbram

15

아래 코드는 각 열에서 잘리지 않고 모든 행을 보는 데 도움이됩니다.

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

같은 질문으로 이전 답변자에게 물었습니다.이 원인이 df두 번 수집됩니까?
javadba

@ javadba 예, count ()는 df를 한 번 통과하고 show ()는 df를 두 번 수집한다고 생각합니다.
MoeChen

10

results.show(20, False)또는 results.show(20, false) Java / Scala / Python에서 실행 중인지 여부에 따라


3

results.show(false) 전체 열 내용이 표시됩니다.

기본적으로 메소드는 20으로 제한되며 앞에 숫자를 추가하면 false더 많은 행이 표시됩니다.


2

이 명령을 시도하십시오 :

df.show(df.count())

1
이것을 시도하십시오 : df.show (일부 아니오)는 작동하지만 df.show (df.count ())는 작동하지 않습니다 df.count는 정수 유형을 허용하므로 df.show ()에서 허용하지 않는 출력 유형을 길게 제공합니다.
토타 크란 티 쿠마르

사용 예 df.show (2000). 2000 행을 검색합니다
Thota 크란 티 쿠마르

2
이 원인이 df두 번 수집됩니까?
javadba

2

results.show(20,false) 스칼라에서 나를 위해 속임수를 썼습니다.




0

스칼라에서 이것을 시도하십시오 :

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 응용 프로그램에 적용됩니다.

"잘라 내기"옵션을 false로 설정하면 출력 싱크에 전체 열을 표시하도록 지시 할 수 있습니다.

val query = out.writeStream
          .outputMode(OutputMode.Update())
          .format("console")
          .option("truncate", false)
          .trigger(Trigger.ProcessingTime("5 seconds"))
          .start()
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.