จะแสดงเนื้อหาคอลัมน์แบบเต็มใน Spark Dataframe ได้อย่างไร


204

ฉันใช้ 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:...|
+--------------------+

ฉันจะแสดงเนื้อหาทั้งหมดของคอลัมน์ได้อย่างไร

คำตอบ:


378

results.show(20, false)จะไม่ตัดทอน ตรวจสอบแหล่งที่มา


4
@tracer จะขอบคุณถ้าคุณจะยอมรับคำตอบของฉันเพราะมันช่วยแก้ปัญหาของคุณ ขอบคุณ!
TomTom101

3
ไม่ใช่ OP แต่เป็นคำตอบที่ถูกต้อง: การแก้ไขเล็กน้อยบูลีนควรเป็นเท็จไม่ใช่เท็จ
xv70

78
มันจะเป็น "False" ในไพ ธ อน แต่ "false" ใน scala / java
drewrobb

4
มันเป็นเท็จ (ไม่ใช่เท็จ) ในสปาร์คเชลล์
Luca 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)ไวยากรณ์ที่ควรจะเป็น สิ่งที่คุณพูดถึงจะทำให้เกิดข้อผิดพลาด
อึ๊งปรากาช

@ ใจประจักษ์ฉันได้ให้คำตอบนี้สำหรับสกาล่าและคุณกำลังพูดถึงหลาม
Narendra Parmar

@NarendraParmar ขออภัยคุณถูกต้อง ในscalaตัวเลือกทั้งสองนั้นถูกต้อง results.show(false)และresults.show(20, false)
Jai Prakash

17

โซลูชันอื่น ๆ นั้นดี หากนี่คือเป้าหมายของคุณ:

  1. ไม่มีการตัดคอลัมน์
  2. ไม่มีการสูญเสียแถว
  3. รวดเร็วและ
  4. ที่มีประสิทธิภาพ

สองบรรทัดนี้มีประโยชน์ ...

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

การดำเนินการของผู้ดำเนินการ 2 การนับและการแสดงจะดำเนินการเร็วขึ้นและมีประสิทธิภาพมากขึ้นเมื่อใช้persistหรือcacheเพื่อบำรุงรักษาโครงสร้างพื้นฐานของไฟล์ข้อมูลพื้นฐานภายในตัวจัดการ ดูข้อมูลเพิ่มเติมเกี่ยวกับการคงอยู่และแคช


1
ดีมาก. ขอบคุณ!
timbram

15

โค้ดด้านล่างจะช่วยในการดูแถวทั้งหมดโดยไม่ตัดปลายในแต่ละคอลัมน์

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

คำถามเดียวกันฉันถามผู้ตอบก่อนหน้า: สาเหตุนี้dfถูกรวบรวมสองครั้งหรือไม่?
javadba

@ javadba ใช่ฉันคิดว่า count () จะผ่าน df หนึ่งครั้งและ show () จะรวบรวม df สองครั้ง
MoeChen


3

results.show(false) จะแสดงเนื้อหาคอลัมน์แบบเต็ม

แสดงวิธีตามวงเงินเริ่มต้นที่ 20 และเพิ่มตัวเลขก่อนfalseจะแสดงแถวเพิ่มเติม


2

ลองคำสั่งนี้:

df.show(df.count())

1
ลองสิ่งนี้: df.show (บางคนไม่ทำงาน) แต่ df.show (df.count ()) จะไม่ทำงาน df.count ให้ประเภทเอาท์พุทยาวซึ่งไม่ได้รับการยอมรับจาก df.show () เนื่องจากยอมรับประเภทจำนวนเต็ม
Thota Kranthi Kumar

ตัวอย่างการใช้ df.show (2000) มันจะดึงข้อมูลได้ 2,000 แถว
Thota Kranthi Kumar

2
สิ่งนี้ทำให้เกิดdfการเก็บสองครั้ง?
javadba




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

โดยการตั้งค่าตัวเลือก "truncate" เป็น false คุณสามารถบอกให้ sink ข้อมูลขาออกแสดงคอลัมน์เต็มได้

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.