এই কোডটি স্পার্ক ২.x থেকে স্কেলা ২.১১ এর সাথে পুরোপুরি কাজ করে
প্রয়োজনীয় ক্লাস আমদানি করুন
import org.apache.spark.sql.{Row, SparkSession}
import org.apache.spark.sql.types.{DoubleType, StringType, StructField, StructType}
SparkSession
অবজেক্ট তৈরি করুন এবং এটি এখানেspark
val spark: SparkSession = SparkSession.builder.master("local").getOrCreate
val sc = spark.sparkContext // Just used to create test RDDs
আসুন RDD
এটি তৈরি করতে একটিDataFrame
val rdd = sc.parallelize(
Seq(
("first", Array(2.0, 1.0, 2.1, 5.4)),
("test", Array(1.5, 0.5, 0.9, 3.7)),
("choose", Array(8.0, 2.9, 9.1, 2.5))
)
)
পদ্ধতি 1
ব্যবহার SparkSession.createDataFrame(RDD obj)
।
val dfWithoutSchema = spark.createDataFrame(rdd)
dfWithoutSchema.show()
+------+--------------------+
| _1| _2|
+------+--------------------+
| first|[2.0, 1.0, 2.1, 5.4]|
| test|[1.5, 0.5, 0.9, 3.7]|
|choose|[8.0, 2.9, 9.1, 2.5]|
+------+--------------------+
পদ্ধতি 2
SparkSession.createDataFrame(RDD obj)
কলামের নাম ব্যবহার এবং নির্দিষ্টকরণ।
val dfWithSchema = spark.createDataFrame(rdd).toDF("id", "vals")
dfWithSchema.show()
+------+--------------------+
| id| vals|
+------+--------------------+
| first|[2.0, 1.0, 2.1, 5.4]|
| test|[1.5, 0.5, 0.9, 3.7]|
|choose|[8.0, 2.9, 9.1, 2.5]|
+------+--------------------+
পদ্ধতি 3 (প্রশ্নের আসল উত্তর)
এই পথে ইনপুট rdd
টাইপ হওয়া উচিত RDD[Row]
।
val rowsRdd: RDD[Row] = sc.parallelize(
Seq(
Row("first", 2.0, 7.0),
Row("second", 3.5, 2.5),
Row("third", 7.0, 5.9)
)
)
স্কিমা তৈরি করুন
val schema = new StructType()
.add(StructField("id", StringType, true))
.add(StructField("val1", DoubleType, true))
.add(StructField("val2", DoubleType, true))
এখন উভয় আবেদন rowsRdd
এবং schema
করতেcreateDataFrame()
val df = spark.createDataFrame(rowsRdd, schema)
df.show()
+------+----+----+
| id|val1|val2|
+------+----+----+
| first| 2.0| 7.0|
|second| 3.5| 2.5|
| third| 7.0| 5.9|
+------+----+----+