स्पार्क एसक्यूएल में अवरोही क्रम में कॉलम को कैसे छाँटा जाए?


137

मैंने कोशिश की df.orderBy("col1").show(10)लेकिन यह आरोही क्रम में क्रमबद्ध हो गया। df.sort("col1").show(10)अवरोही क्रम में भी सॉर्ट करें। मैंने स्टैकओवरफ़्लो को देखा और मुझे जो उत्तर मिले वे सभी पुराने थे या आरडीडी को संदर्भित किए गए थे । मैं स्पार्क में देशी डेटाफ्रेम का उपयोग करना चाहूंगा।


2
उनका अर्थ है "df.sort (" col1 ")। शो (10) भी आरोही क्रम में सॉर्ट करता है "
जोशिया योडर

इस समाधान ने मेरे लिए पूरी तरह से काम किया: stackoverflow.com/a/38575271/5957143
abc123

जवाबों:


214

आप स्पार्क sql फ़ंक्शन को आयात करके स्तंभ को सॉर्ट भी कर सकते हैं

import org.apache.spark.sql.functions._
df.orderBy(asc("col1"))

या

import org.apache.spark.sql.functions._
df.sort(desc("col1"))

sqlContext.implicits._ आयात करना

import sqlContext.implicits._
df.orderBy($"col1".desc)

या

import sqlContext.implicits._
df.sort($"col1".desc)

यह भी कि जब आप सभी स्तंभों पर चढ़ने का आदेश दे रहे हों, तो ascकीवर्ड आवश्यक नहीं है ..orderBy("col1", "col2"):।
दान

91

यह विधि के org.apache.spark.sql.DataFrameलिए sortहै:

df.sort($"col1", $"col2".desc)

ध्यान दें $और परिणाम के आधार पर छाँटने के लिए कॉलम के .descअंदर sort


5
import org.apache.spark.sql.functions._और import sqlContext.implicits._आपको बहुत अच्छी कार्यक्षमता भी मिलती है।
डेविड ग्रिफिन

4
@ स्वतंत्रता: एक सिंटैक्स त्रुटि दिखाता है: df.sort($"Time1", $"Time2".desc) SyntaxError: invalid syntax$ प्रतीक पर
kaks

@ किक्स, उस त्रुटि से बचने के लिए ऊपर वर्णित कार्यों / संक्षेपणों को आयात करने की आवश्यकता है
रिमेर

41

केवल PySpark

मैं इस पोस्ट के दौरान आया था जब PySpark में भी ऐसा ही देख रहा था। सबसे आसान तरीका है कि आप पैरामीटर को आरोही = गलत जोड़ सकते हैं:

df.orderBy("col1", ascending=False).show(10)

संदर्भ: http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.DataFrame.orderBy


8
इस प्रश्न को एक स्कैला टैग के साथ चिह्नित किया गया है, लेकिन यह उत्तर केवल इस सिंटैक्स के लिए है, साथ ही एक फ़ंक्शन हस्ताक्षर अजगर-केवल हैं।
वायाचेस्लाव रोडियोनोव

1
धन्यवाद! PySpark संस्करण की तलाश में था।
arrkaye

12
import org.apache.spark.sql.functions.desc

df.orderBy(desc("columnname1"),desc("columnname2"),asc("columnname3"))

1
यह @AmitDubey द्वारा 3 साल पहले के डुप्लिकेट उत्तर है। उस एक के पक्ष में हटा दिया जाना चाहिए।
जादव


2

जावा के मामले में:

यदि हम DataFramesजॉन्स को लागू करते समय (यहां इनर जॉइन करते हैं), हम प्रत्येक एएफएस में अलग-अलग तत्वों का चयन करने के बाद (एएससी में) सॉर्ट कर सकते हैं:

Dataset<Row> d1 = e_data.distinct().join(s_data.distinct(), "e_id").orderBy("salary");

कहाँ पे e_idवह स्तंभ है जिस पर ASC में वेतन के आधार पर छंटनी की जाती है।

इसके अलावा, हम स्पार्क एसक्यूएल का उपयोग कर सकते हैं:

SQLContext sqlCtx = spark.sqlContext();
sqlCtx.sql("select * from global_temp.salary order by salary desc").show();

कहाँ पे

  • स्पार्क -> स्पार्कसेशन
  • वेतन -> ग्लोबलटम्प व्यू।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.