স্পার্ক এসকিউএলে ক্রমানুসারে কলাম অনুসারে বাছাই কিভাবে?


137

আমি চেষ্টা করেছি df.orderBy("col1").show(10)তবে এটি আরোহী ক্রম অনুসারে বাছাই হয়েছে। df.sort("col1").show(10)ক্রমবর্ধমান ক্রম অনুসারে। আমি স্ট্যাকওভারফ্লো দেখেছি এবং যে উত্তরগুলি পেয়েছি সেগুলি সমস্ত পুরানো বা আরডিডিগুলিতে উল্লেখ করা হয়েছিল । আমি স্পার্কে নেটিভ ডেটাফ্রেমটি ব্যবহার করতে চাই।


2
তার অর্থ "df.sort (" কল 1 ") show শো (10) এছাড়াও আরোহী ক্রম অনুসারে সাজানো"
জোশিয়াহ যোদার

এই সমাধানটি আমার জন্য নিখুঁতভাবে কাজ করেছে: stackoverflow.com/a/38575271/5957143
abc123

উত্তর:


214

আপনি স্পার্ক স্কেল ফাংশন আমদানি করে কলামটি বাছাই করতে পারেন

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$ প্রতীক
কাকসে

@ কাক্স, সেই ত্রুটি এড়াতে উপরে বর্ণিত ফাংশন / ফলস আমদানি করা দরকার
রাইমার

41

কেবল পাইস্পার্ক

পাইএসপার্কে একই কাজ করতে দেখে আমি এই পোস্টটি জুড়ে এসেছি। সবচেয়ে সহজ উপায় হ'ল প্যারামিটারটিকে আরোহণ = মিথ্যা:

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
ধন্যবাদ! পাইস্পার্ক সংস্করণটি খুঁজছিল।
আরকায়ে



2

জাভা ক্ষেত্রে:

আমরা যদি ব্যবহার করি DataFrames, যোগ দেওয়ার সময় (এখানে অভ্যন্তরীণ যোগদান করুন), প্রতিটি ডিএফের পৃথক উপাদান নির্বাচন করার পরে আমরা বাছাই করতে পারি (ASC তে):

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

কোথায় e_idএএসসিতে বেতনের সাথে বাছাই করার সময় কোন কলামে যোগদান করা হবে তা রয়েছে

এছাড়াও, আমরা স্পার্ক এসকিউএল হিসাবে ব্যবহার করতে পারি:

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

কোথায়

  • স্পার্ক -> স্পার্কসেশন
  • বেতন -> গ্লোবালঅ্যাম্প ভিউ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.