ใช้ sparklyr
sparklyr คืออินเทอร์เฟซ R สําหรับ Apache Spark ซึ่งมีกลไกในการโต้ตอบกับ Spark โดยใช้อินเทอร์เฟซ R ที่คุ้นเคย คุณสามารถใช้ sparklyr ผ่านข้อกําหนดงานแบบชุดงานของ Spark หรือด้วยสมุดบันทึก Microsoft Fabric แบบโต้ตอบ
ข้อกําหนดเบื้องต้น
รับ การสมัครใช้งาน Microsoft Fabric หรือลงทะเบียนสําหรับ Microsoft Fabric รุ่นทดลองใช้ฟรี
ลงชื่อเข้าใช้ Microsoft Fabric
ใช้ตัวสลับประสบการณ์การใช้งานที่ด้านล่างซ้ายของหน้าหลักของคุณเพื่อเปลี่ยนเป็น Fabric
เปิดหรือสร้างสมุดบันทึก หากต้องการเรียนรู้วิธีการ ดู วิธีใช้สมุดบันทึก Microsoft Fabric
ตั้งค่าตัวเลือกภาษาเพื่อ SparkR (R) เพื่อเปลี่ยนภาษาหลัก
แนบสมุดบันทึกของคุณเข้ากับเลคเฮ้าส์ ทางด้านซ้าย เลือก เพิ่ม เพื่อเพิ่มเลคเฮ้าส์ที่มีอยู่แล้ว หรือเพื่อสร้างเลคเฮ้าส์
เชื่อมต่อ sparklyr กับคลัสเตอร์ Synapse Spark
ใช้วิธีการเชื่อมต่อต่อไปนี้ใน spark_connect()
เพื่อสร้างการเชื่อมต่อ sparklyr
เราสนับสนุนวิธีการเชื่อมต่อใหม่ที่เรียกว่า synapse
ซึ่งช่วยให้คุณสามารถเชื่อมต่อกับเซสชัน Spark ที่มีอยู่ได้ ซึ่งจะช่วยลดเวลาเริ่มต้นเซสชัน sparklyr
ได้อย่างมาก นอกจากนี้ เรายังร่วมให้วิธีการเชื่อมต่อนี้กับโครงการ sparklyr แบบโอเพนซอร์ส ด้วย method = "synapse"
คุณสามารถใช้ทั้ง sparklyr
และ SparkR
ในเซสชันเดียวกัน และ แชร์ข้อมูลระหว่างได้อย่างง่ายดาย
# connect sparklyr to your spark cluster
spark_version <- sparkR.version()
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", method = "synapse", config = config)
ใช้ sparklyr เพื่ออ่านข้อมูล
เซสชัน Spark ใหม่ไม่มีข้อมูล ขั้นตอนแรกคือการโหลดข้อมูลลงในหน่วยความจําของเซสชัน Spark หรือชี้ Spark ไปยังตําแหน่งที่ตั้งของข้อมูลเพื่อให้สามารถเข้าถึงข้อมูลได้ตามต้องการ
# load the sparklyr package
library(sparklyr)
# copy data from R environment to the Spark session's memory
mtcars_tbl <- copy_to(sc, mtcars, "spark_mtcars", overwrite = TRUE)
head(mtcars_tbl)
การใช้ sparklyr
คุณยังสามารถ write
และ read
ข้อมูลจากไฟล์ Lakehouse โดยใช้เส้นทาง ABFS ได้ หากต้องการอ่านและเขียนไปยังเลคเฮ้าส์ ก่อนอื่นให้เพิ่มชุดข้อมูลลงในเซสชั่นของคุณ ทางด้านซ้ายของสมุดบันทึก ให้เลือก เพิ่ม เพื่อเพิ่มเลคเฮ้าส์ที่มีอยู่แล้ว หรือสร้างเลคเฮ้าส์ใหม่
เมื่อต้องการค้นหาเส้นทาง ABFS ของคุณ คลิกขวาที่โฟลเดอร์ Files ในเลคเฮ้าส์ของคุณ จากนั้นเลือก คัดลอกเส้นทาง ABFS วางเส้นทางของคุณเพื่อแทนที่ abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files
ในโค้ดนี้:
temp_csv = "abfss://xxxx@onelake.dfs.fabric.microsoft.com/xxxx/Files/data/mtcars.csv"
# write the table to your lakehouse using the ABFS path
spark_write_csv(mtcars_tbl, temp_csv, header = TRUE, mode = 'overwrite')
# read the data as CSV from lakehouse using the ABFS path
mtcarsDF <- spark_read_csv(sc, temp_csv)
head(mtcarsDF)
ใช้ sparklyr เพื่อจัดการข้อมูล
sparklyr
มีหลายวิธีในการประมวลผลข้อมูลภายใน Spark โดยใช้:
- คําสั่ง
dplyr
- SparkSQL
- ตัวแปลงคุณลักษณะของ Spark
ใช้ dplyr
คุณสามารถใช้คําสั่ง dplyr
ที่คุ้นเคยเพื่อเตรียมข้อมูลภายใน Spark ได้ คําสั่งทํางานภายใน Spark ดังนั้นจึงไม่มีการส่งข้อมูลที่ไม่จําเป็นระหว่าง R และ Spark
คลิก การจัดการข้อมูลด้วย dplyr
เพื่อดูเอกสารเพิ่มเติมเกี่ยวกับการใช้ dplyr กับ Spark
# count cars by the number of cylinders the engine contains (cyl), order the results descendingly
library(dplyr)
cargroup <- group_by(mtcars_tbl, cyl) %>%
count() %>%
arrange(desc(n))
cargroup
sparklyr
และ dplyr
แปลคําสั่ง R เป็น Spark SQL สําหรับเรา เมื่อต้องการดูคิวรีที่เกิดขึ้น ให้ใช้ show_query()
:
# show the dplyr commands that are to run against the Spark connection
dplyr::show_query(cargroup)
ใช้ SQL
นอกจากนี้ยังเป็นไปได้ที่จะดําเนินการคิวรี SQL โดยตรงกับตารางภายในคลัสเตอร์ Spark วัตถุ spark_connection()
ใช้อินเทอร์เฟซ DBI สําหรับ Spark ดังนั้นคุณสามารถใช้ dbGetQuery()
เพื่อดําเนินการ SQL และส่งกลับผลลัพธ์เป็นเฟรมข้อมูล R:
library(DBI)
dbGetQuery(sc, "select cyl, count(*) as n from spark_mtcars
GROUP BY cyl
ORDER BY n DESC")
ใช้ตัวแปลงคุณลักษณะ
ทั้งสองวิธีก่อนหน้านี้ขึ้นอยู่กับคําสั่ง SQL Spark มีคําสั่งที่ทําให้การแปลงข้อมูลบางอย่างสะดวกยิ่งขึ้นและไม่มีการใช้ SQL
ตัวอย่างเช่น คําสั่ง ft_binarizer()
ช่วยลดความซับซ้อนของการสร้างคอลัมน์ใหม่ที่ระบุว่าค่าของคอลัมน์อื่นอยู่เหนือค่าเกณฑ์บางอย่างหรือไม่
คุณสามารถค้นหารายการทั้งหมดของ Spark Feature Transformers ที่พร้อมใช้งานผ่าน
mtcars_tbl %>%
ft_binarizer("mpg", "over_20", threshold = 20) %>%
select(mpg, over_20) %>%
head(5)
แชร์ข้อมูลระหว่าง sparklyr
และ SparkR
เมื่อคุณ เชื่อมต่อ sparklyr
เพื่อ synapse spark cluster ด้วย method = "synapse"
คุณสามารถใช้ได้ทั้ง sparklyr
และ SparkR
ในเซสชันเดียวกันและแชร์ข้อมูลระหว่างกันได้อย่างง่ายดาย คุณสามารถสร้างตาราง Spark ใน sparklyr
และอ่านจาก SparkR
ได้
# load the sparklyr package
library(sparklyr)
# Create table in `sparklyr`
mtcars_sparklyr <- copy_to(sc, df = mtcars, name = "mtcars_tbl", overwrite = TRUE, repartition = 3L)
# Read table from `SparkR`
mtcars_sparklr <- SparkR::sql("select cyl, count(*) as n
from mtcars_tbl
GROUP BY cyl
ORDER BY n DESC")
head(mtcars_sparklr)
การเรียนรู้ของเครื่อง
นี่คือตัวอย่างที่เราใช้ ml_linear_regression()
เพื่อให้พอดีกับแบบจําลองการถดถอยเชิงเส้น เราใช้ชุดข้อมูล mtcars
ในตัวและดูว่าเราสามารถคาดการณ์ปริมาณการใช้เชื้อเพลิงของรถยนต์ (mpg
) ตามน้ําหนัก (wt
) และจํานวนถังที่เครื่องยนต์ประกอบด้วย (cyl
) เราคาดเดาในแต่ละกรณีที่ความสัมพันธ์ระหว่าง mpg
และแต่ละคุณลักษณะของเราเป็นแบบเชิงเส้น
สร้างชุดข้อมูลการทดสอบและการฝึกอบรม
ใช้การแยก 70% สําหรับการฝึกและ 30% สําหรับการทดสอบแบบจําลอง การเล่นด้วยอัตราส่วนนี้ส่งผลให้เกิดแบบจําลองที่แตกต่างกัน
# split the dataframe into test and training dataframes
partitions <- mtcars_tbl %>%
select(mpg, wt, cyl) %>%
sdf_random_split(training = 0.7, test = 0.3, seed = 2023)
ฝึกแบบจําลอง
ฝึกแบบจําลองการถดถอยโลจิสติกส์
fit <- partitions$training %>%
ml_linear_regression(mpg ~ .)
fit
ตอนนี้ใช้ summary()
เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับคุณภาพของแบบจําลองของเราและความสําคัญทางสถิติของแต่ละตัวทํานายของเรา
summary(fit)
ใช้แบบจําลอง
คุณสามารถใช้แบบจําลองบนชุดข้อมูลทดสอบโดยการเรียก ml_predict()
pred <- ml_predict(fit, partitions$test)
head(pred)
สําหรับรายการของแบบจําลอง Spark ML ที่พร้อมใช้งานผ่าน sparklyr เยี่ยมชม อ้างอิง - ML
ยกเลิกการเชื่อมต่อจากคลัสเตอร์ Spark
คุณสามารถเรียกใช้ spark_disconnect()
หรือเลือกเซสชันการหยุด ปุ่มที่ด้านบนของริบบอนสมุดบันทึกจะสิ้นสุดเซสชัน Spark ของคุณ
spark_disconnect(sc)
เนื้อหาที่เกี่ยวข้อง
เรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชันการทํางานของ R:
- วิธีใช้ SparkR
- วิธีใช้ Tidyverse
- การจัดการไลบรารี R
- สร้าง การแสดงภาพ R
- บทช่วยสอน : การคาดการณ์ราคาอะโวคาโด
- บทช่วยสอน : การคาดการณ์ความล่าช้าของเที่ยวบิน