إظهار قيم الأعمدة المتميزة في قاعدة بيانات pyspark: python




pyspark-sql (3)

لنفترض أننا نعمل مع التمثيل التالي للبيانات (عمودين ، k و v ، حيث يحتوي k على ثلاثة إدخالات ، اثنان فريدان:

+---+---+
|  k|  v|
+---+---+
|foo|  1|
|bar|  2|
|foo|  3|
+---+---+

مع dataframe الباندا:

import pandas as pd
p_df = pd.DataFrame([("foo", 1), ("bar", 2), ("foo", 3)], columns=("k", "v"))
p_df['k'].unique()

يؤدي ذلك إلى إرجاع ndarray ، أي array(['foo', 'bar'], dtype=object)

لقد طلبت "pyspark dataframe البديل لـ pandas df ['col']. unique ()". الآن ، بالنظر إلى Spark dataframe التالية:

s_df = sqlContext.createDataFrame([("foo", 1), ("bar", 2), ("foo", 3)], ('k', 'v'))

إذا كنت تريد نفس النتيجة من Spark ، أي ndarray ، فاستخدم toPandas() :

s_df.toPandas()['k'].unique()

بدلاً من ذلك ، إذا كنت لا تحتاج إلى ndarray وجه التحديد وتريد فقط قائمة بالقيم الفريدة للعمود k :

s_df.select('k').distinct().rdd.map(lambda r: r[0]).collect()

أخيرًا ، يمكنك أيضًا استخدام فهم القائمة على النحو التالي:

[i.k for i in s_df.select('k').distinct().collect()]

يرجى اقتراح pyspark dataframe البديل لـ Pandas df['col'].unique() .

أريد سرد جميع القيم الفريدة في عمود قاعدة بيانات pyspark.

ليست طريقة كتابة SQL (registertemplate ثم استعلام SQL للقيم المتميزة).

كما أنني لست بحاجة إلى groupby->countDistinct ، بدلاً من ذلك أريد التحقق من القيم المتميزة في هذا العمود.


هذا يجب أن يساعد في الحصول على قيم مميزة للعمود:

df.select('column1').distinct().show()

يمكنك استخدام df.dropDuplicates(['col1','col2']) للحصول على صفوف مميزة فقط تستند إلى colX في الصفيف.