আপনি DataFrameস্পার্কে একটি স্বেচ্ছাসেবী কলাম যুক্ত করতে পারবেন না । নতুন কলামগুলি কেবল আক্ষরিক ব্যবহারের মাধ্যমে তৈরি করা যেতে পারে ( স্পার্ক ডেটাফ্রেমে ধ্রুবক কলাম কীভাবে যুক্ত করা যায় তাতে অন্যান্য আক্ষরিক ধরণের বিবরণ দেওয়া আছে? )
from pyspark.sql.functions import lit
df = sqlContext.createDataFrame(
[(1, "a", 23.0), (3, "B", -23.0)], ("x1", "x2", "x3"))
df_with_x4 = df.withColumn("x4", lit(0))
df_with_x4.show()
## +---+---+-----+---+
## | x1| x2| x3| x4|
## +---+---+-----+---+
## | 1| a| 23.0| 0|
## | 3| B|-23.0| 0|
## +---+---+-----+---+
একটি বিদ্যমান কলাম রূপান্তর করা:
from pyspark.sql.functions import exp
df_with_x5 = df_with_x4.withColumn("x5", exp("x3"))
df_with_x5.show()
## +---+---+-----+---+--------------------+
## | x1| x2| x3| x4| x5|
## +---+---+-----+---+--------------------+
## | 1| a| 23.0| 0| 9.744803446248903E9|
## | 3| B|-23.0| 0|1.026187963170189...|
## +---+---+-----+---+--------------------+
ব্যবহার করে অন্তর্ভুক্ত join:
from pyspark.sql.functions import exp
lookup = sqlContext.createDataFrame([(1, "foo"), (2, "bar")], ("k", "v"))
df_with_x6 = (df_with_x5
.join(lookup, col("x1") == col("k"), "leftouter")
.drop("k")
.withColumnRenamed("v", "x6"))
## +---+---+-----+---+--------------------+----+
## | x1| x2| x3| x4| x5| x6|
## +---+---+-----+---+--------------------+----+
## | 1| a| 23.0| 0| 9.744803446248903E9| foo|
## | 3| B|-23.0| 0|1.026187963170189...|null|
## +---+---+-----+---+--------------------+----+
বা ফাংশন / ইউডিএফ দিয়ে উত্পন্ন:
from pyspark.sql.functions import rand
df_with_x7 = df_with_x6.withColumn("x7", rand())
df_with_x7.show()
## +---+---+-----+---+--------------------+----+-------------------+
## | x1| x2| x3| x4| x5| x6| x7|
## +---+---+-----+---+--------------------+----+-------------------+
## | 1| a| 23.0| 0| 9.744803446248903E9| foo|0.41930610446846617|
## | 3| B|-23.0| 0|1.026187963170189...|null|0.37801881545497873|
## +---+---+-----+---+--------------------+----+-------------------+
পারফরম্যান্স-ভিত্তিক, অন্তর্নির্মিত ফাংশন ( pyspark.sql.functions), যা অনুঘটক অভিব্যক্তিতে মানচিত্র করে সাধারণত পাইথন ব্যবহারকারী সংজ্ঞায়িত ফাংশনগুলির চেয়ে বেশি পছন্দ করা হয়।
আপনি যদি কোনও কলাম হিসাবে একটি স্বেচ্ছাসেবী আরডিডি এর সামগ্রী যুক্ত করতে চান তবে পারেন
- বিদ্যমান ডাটা ফ্রেমে সারি সংখ্যা যুক্ত করুন
zipWithIndexআরডিডি-তে কল করুন এবং এটিকে ডেটা ফ্রেমে রূপান্তর করুন
- যোগদানের কী হিসাবে সূচকটি ব্যবহার করে উভয়ই যোগ দিন