सीमा(n) बनाम शो(एन) के प्रदर्शन में असमानता Pyspark

0

सवाल

की कोशिश कर रहा करने के लिए एक गहरी समझ पाने के लिए कैसे स्पार्क का काम करता है और था के साथ खेलने के आसपास pyspark सीएलआई (2.4.0). मैं देख रहा था के बीच अंतर के लिए का उपयोग कर limit(n).show() और show(n). मैं समाप्त हो रही दो बहुत ही अलग अलग प्रदर्शन के समय के लिए दो बहुत ही इसी तरह के प्रश्नों. नीचे दिए गए आदेशों हैं मैं भाग गया । लकड़ी की छत फ़ाइल में संदर्भित कोड के नीचे है के बारे में 50 कॉलम और है पर 50gb में आकार पर दूरस्थ HDFS.

# Create dataframe
>>> df = sqlContext.read.parquet('hdfs://hdfs.host/path/to.parquet') ↵

# Create test1 dataframe
>>> test1 = df.select('test_col') ↵
>>> test1.schema ↵
StructType(List(StructField(test_col,ArrayType(LongType,true),true)))
>>> test1.explain() ↵
== Physical Plan ==
*(1) Project [test_col#40]
+- *(1) FileScan parquet [test_col#40]
    Batched: false,
    Format: Parquet,
    Location: InMemoryFileIndex[hdfs://hdfs.host/path/to.parquet],
    PartitionCount: 25,
    PartitionFilters: [],
    PushedFilters: [],
    ReadSchema: struct<test_col:array<bigint>>

# Create test2 dataframe
>>> test2 = df.select('test_col').limit(5) ↵
>>> test2.schema ↵
StructType(List(StructField(test_col,ArrayType(LongType,true),true)))
>>> test2.explain() ↵
== Physical Plan ==
CollectLimit 5
+- *(1) Project [test_col#40]
   +- *(1) FileScan parquet [test_col#40]
     Batched: false,
     Format: Parquet,
     Location: InMemoryFileIndex[hdfs://hdfs.host/path/to.parquet],
     PartitionCount: 25,
     PartitionFilters: [],
     PushedFilters: [],
     ReadSchema: struct<test_col:array<bigint>>

सूचना है कि शारीरिक योजना लगभग समान है, दोनों के लिए test1 और test2. केवल अपवाद है test2 की योजना के साथ शुरू होता है "CollectLimit 5". स्थापित करने के बाद यह मैं भागा test1.show(5) और test2.show(5). परीक्षण 1 लौटे परिणाम तुरंत. परीक्षा 2 से पता चला है एक प्रगति पट्टी के साथ 2010 कार्यों ले लिया है और के बारे में 20 मिनट पूरा करने के लिए (मैं केवल एक ही था निष्पादक)

सवाल क्यों परीक्षण 2 के साथ (सीमा) का प्रदर्शन इतना खराब की तुलना में परीक्षण करने के लिए 1 (सीमा के बिना)? डेटा सेट और सेट परिणाम समान थे और शारीरिक योजना लगभग समान था.

2

सबसे अच्छा जवाब

1

मन में रखने के लिए:

  • show() के लिए एक उपनाम है show(20) और आंतरिक रूप से निर्भर करता है पर take(n: Int): Array[T]
  • limit(n: Int) रिटर्न एक डाटासेट है और एक महंगी आपरेशन पढ़ता है कि पूरे स्रोत
2021-11-23 20:59:09
0

सीमा - परिणाम में नए dataframe और लंबे समय के लिए इस वजह से है क्योंकि विधेय pushdown वर्तमान में समर्थित नहीं में अपने इनपुट फ़ाइल स्वरूप है । इसलिए पढ़ने पूरे डाटासेट और लागू करने की सीमा है ।

2021-11-24 02:21:07

यह मिल गया है, तो इसका मतलब है कि दो परीक्षणों में होता है, और अधिक समान प्रदर्शन अगर पढ़ने से MySQL की तरह के बजाय HDFS?
cyclobster

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में