Làm cách nào để hiển thị nội dung cột đầy đủ trong Spark Dataframe?


201

Tôi đang sử dụng spark-csv để tải dữ liệu vào DataFrame. Tôi muốn thực hiện một truy vấn đơn giản và hiển thị nội dung:

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 có vẻ bị cắt ngắn:

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

Làm cách nào để hiển thị toàn bộ nội dung của cột?

Câu trả lời:


372

results.show(20, false)sẽ không cắt ngắn. Kiểm tra nguồn


4
@tracer Sẽ đánh giá cao nếu bạn chấp nhận câu trả lời của tôi vì nó giải quyết được vấn đề của bạn. Cảm ơn!
TomTom101

3
Không phải OP nhưng đây thực sự là câu trả lời đúng: Chỉnh sửa nhỏ, boolean nên Sai, không sai.
xv70

77
Nó sẽ là "Sai" trong python, nhưng "false" trong scala / java
drewrobb 7/10/2016

4
đó là sai (không sai) trong vỏ sò
Luca Gibelli

5
tương đương để ghi vào luồng trong chế độ bảng điều khiển làdataFrame.writeStream.outputMode("append").format("console").option("truncate", "false").start()
JMess

38

Nếu bạn đặt results.show(false), kết quả sẽ không bị cắt ngắn


2
Tôi tưởng tượng rằng những nhận xét về câu trả lời TomTom101 của về falseáp dụng ở đây, quá.
Mogsdad

1
@Narendra Parmar cú pháp nên được results.show(20, False). Một trong những bạn đã đề cập sẽ đưa ra lỗi.
Jai Prakash

@ Jai Prakash, tôi đã đưa ra câu trả lời này cho scala và bạn đang nói về con trăn,
Narendra Parmar

@NarendraParmar xin lỗi bạn là chính xác. Trong scalacả hai tùy chọn đều hợp lệ. results.show(false)results.show(20, false)
Jai Prakash

17

Các giải pháp khác là tốt. Nếu đây là những mục tiêu của bạn:

  1. Không cắt bớt cột,
  2. Không mất hàng,
  3. Nhanh và
  4. Có hiệu quả

Hai dòng này rất hữu ích ...

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

Bằng cách kiên trì, 2 hành động thực thi, đếm và hiển thị, nhanh hơn & hiệu quả hơn khi sử dụng persisthoặc cacheđể duy trì cấu trúc khung dữ liệu cơ bản tạm thời bên trong các bộ thực thi. Xem thêm về kiên trì và bộ nhớ cache .


1
Rất đẹp. Cảm ơn!
timbram

15

Mã bên dưới sẽ giúp xem tất cả các hàng mà không bị cắt bớt trong mỗi cột

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

cùng một nhiệm vụ tôi đã hỏi người trả lời trước: nguyên nhân này dfcó được thu thập hai lần không?
javadba

@javadba vâng, tôi nghĩ Count () sẽ đi qua df một lần và show () sẽ thu thập df hai lần.
MoeChen

10

results.show(20, False)hoặc results.show(20, false) tùy thuộc vào việc bạn đang chạy nó trên Java / Scala / Python


3

results.show(false) sẽ cho bạn thấy nội dung cột đầy đủ.

Hiển thị phương thức theo giới hạn mặc định là 20 và thêm một số trước falsesẽ hiển thị nhiều hàng hơn.


2

thử lệnh này:

df.show(df.count())

1
Hãy thử điều này: df.show (một số không) sẽ hoạt động nhưng df.show (df.count ()) sẽ không hoạt động df.count cung cấp loại đầu ra dài mà df.show () không chấp nhận vì nó chấp nhận loại số nguyên.
Thota Kranthi Kumar

Ví dụ sử dụng df.show (2000). Nó sẽ lấy 2000 hàng
Thota Kranthi Kumar

2
Điều này có gây ra dfđược thu thập hai lần?
javadba

2

results.show(20,false) đã lừa tôi ở Scala.


1

Trong Databricks, bạn có thể hình dung khung dữ liệu theo định dạng bảng. Với lệnh:

display(results)

Nó sẽ trông giống như

nhập mô tả hình ảnh ở đây



0

Hãy thử điều này trong scala:

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

Phương thức hiển thị chấp nhận một số nguyên và giá trị Boolean nhưng df.count trả về Dài ... vì vậy cần phải truyền kiểu


0

Trong c # Option("truncate", false)không cắt bớt dữ liệu trong đầu ra.

StreamingQuery query = spark
                    .Sql("SELECT * FROM Messages")
                    .WriteStream()
                    .OutputMode("append")
                    .Format("console")
                    .Option("truncate", false)
                    .Start();

0

Câu trả lời sau đây áp dụng cho ứng dụng Spark Streaming.

Bằng cách đặt tùy chọn "cắt ngắn" thành false, bạn có thể yêu cầu phần chìm đầu ra hiển thị cột đầy đủ.

val query = out.writeStream
          .outputMode(OutputMode.Update())
          .format("console")
          .option("truncate", false)
          .trigger(Trigger.ProcessingTime("5 seconds"))
          .start()
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.