ডেটাফ্রেম গ্রুপটি স্পার্ক করুন এবং অবতরণ ক্রমে সাজান (পাইপর্ক)


90

আমি পাইস্পার্ক (পাইথন ২.7.৯ / স্পার্ক ১.৩.১) ব্যবহার করছি এবং একটি ডেটা ফ্রেম গ্রুপঅবজেক্ট রয়েছে যা আমাকে ফিল্ডিং এবং সাজানোর ক্রম অনুসারে বাছাই করতে হবে। কোডের এই অংশের মাধ্যমে এটি অর্জনের চেষ্টা করা হচ্ছে।

group_by_dataframe.count().filter("`count` >= 10").sort('count', ascending=False)

তবে এটি নিম্নলিখিত ত্রুটি ছুড়ে ফেলে।

sort() got an unexpected keyword argument 'ascending'

উত্তর:


173

পাইস্পার্কে 1.3 sortপদ্ধতিতে আরোহণের প্যারামিটার লাগে না। descপরিবর্তে আপনি পদ্ধতিটি ব্যবহার করতে পারেন :

from pyspark.sql.functions import col

(group_by_dataframe
    .count()
    .filter("`count` >= 10")
    .sort(col("count").desc()))

বা descফাংশন:

from pyspark.sql.functions import desc

(group_by_dataframe
    .count()
    .filter("`count` >= 10")
    .sort(desc("count"))

উভয় পদ্ধতি স্পার্ক> = 1.3 (স্পার্ক 2.x সহ) সহ ব্যবহার করা যেতে পারে।



25

এখন পর্যন্ত সবচেয়ে সুবিধাজনক উপায় এটি ব্যবহার করছে:

df.orderBy(df.column_name.desc())

বিশেষ আমদানির প্রয়োজন হয় না।


4
ডেটাব্রিক্সের সলিউশন আর্কিটেক্ট ড্যানিয়েল হাভিভকে কৃতিত্ব যিনি আমাকে এইভাবে দেখিয়েছিলেন।
gdoron মনিকা

4
এখন পর্যন্ত এখানে সেরা উত্তর।
জন্ম_প্রেম

পরিবর্তে এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। অনেক সরল এবং প্যাকেজগুলির উপর নির্ভর করে না (সম্ভবত সেই সময়ে উপলভ্য ছিল না)
বেনামে

আমি এই উত্তরটি সত্যিই পছন্দ করি তবে আমার পক্ষে স্পার্ক 3.0.০.০ সহ গণনা করা হয়নি। আমি মনে করি কারণ একটি সংখ্যার চেয়ে গণনা একটি ফাংশন। প্রকারের ত্রুটি: অবৈধ আর্গুমেন্ট, কোনও স্ট্রিং বা কলাম নয়: <বাউন্ড পদ্ধতি ডেটা ফ্রেমের ডেটা ফ্রেমকাউন্ট [...]> <ক্লাস 'পদ্ধতি'> টাইপের। কলামের আক্ষরিক জন্য, 'লিট', 'অ্যারে', 'স্ট্রাক্ট' বা 'ক্রিয়ে_ম্যাপ' ফাংশনটি ব্যবহার করুন।
আরমান্ডো

5

পাইপর্ক 2.4.4 এ

1) group_by_dataframe.count().filter("`count` >= 10").orderBy('count', ascending=False)

2) from pyspark.sql.functions import desc
   group_by_dataframe.count().filter("`count` >= 10").orderBy('count').sort(desc('count'))

1) এবং 1) এ আমদানি করার দরকার নেই সংক্ষিপ্ত এবং পড়া সহজ,
সুতরাং আমি 1) 2 এর চেয়ে বেশি পছন্দ করি)


4

আপনি নিচে গ্রুপবাই এবং অর্ডারবাই ব্যবহার করতে পারেন

dataFrameWay = df.groupBy("firstName").count().withColumnRenamed("count","distinct_name").sort(desc("count"))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.