แชร์ผ่าน


ใช้ sparklyr

ทรัพยากร Sparklyr ภาษา R ทําหน้าที่เป็นอินเทอร์เฟซกับ Apache Spark ทรัพยากร Sparklr มีกลไกในการโต้ตอบกับ Spark กับอินเทอร์เฟซ R ที่คุ้นเคย ใช้ sparklyr ผ่านข้อกําหนดงานแบบชุดงานของ Spark หรือด้วยสมุดบันทึก Microsoft Fabric แบบโต้ตอบ

sparklyrใช้กับแพคเกจ tidyverse อื่น ๆ - ตัวอย่างเช่น dplyr Microsoft Fabric กระจายรุ่นล่าสุดที่เสถียรของ sparklyr และ tidyverse กับทุกรุ่นรันไทม์ คุณสามารถนําเข้าแหล่งข้อมูลเหล่านี้ และเริ่มต้นใช้ API

ข้อกําหนดเบื้องต้น

  • เปิดหรือสร้างสมุดบันทึก หากต้องการเรียนรู้วิธีการ ดู วิธีใช้สมุดบันทึก Microsoft Fabric

  • ตั้งค่าตัวเลือกภาษาเพื่อ SparkR (R) เพื่อเปลี่ยนภาษาหลัก

  • แนบสมุดบันทึกของคุณเข้ากับเลคเฮ้าส์ ทางด้านซ้าย เลือก เพิ่ม เพื่อเพิ่มเลคเฮ้าส์ที่มีอยู่แล้ว หรือเพื่อสร้างเลคเฮ้าส์

เชื่อมต่อ sparklyr กับคลัสเตอร์ Synapse Spark

spark_connect()วิธีการเชื่อมต่อฟังก์ชันจะสร้างsparklyrการเชื่อมต่อ ฟังก์ชันสร้างวิธีการเชื่อมต่อใหม่ที่ชื่อว่า synapseซึ่งเชื่อมต่อกับเซสชัน Spark ที่มีอยู่ ซึ่งจะช่วยลดเวลาเริ่มต้นเซสชัน sparklyr ได้อย่างมาก วิธีการเชื่อมต่อนี้พร้อมใช้งานในโครงการ sparklyr โอเพนซอร์ส ด้วย method = "synapse"คุณสามารถใช้ทั้ง sparklyr และ SparkR ในเซสชันเดียวกัน และ แชร์ข้อมูลระหว่างกันได้อย่างง่ายดาย ตัวอย่างรหัสเซลล์ของสมุดบันทึกต่อไปนี้ใช้ spark_connect() ฟังก์ชัน:

# 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 ให้คลิกขวาที่โฟลเดอร์ ไฟล์ ในเลคเฮ้าส์ของคุณ และเลือก คัดลอกเส้นทาง 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

# 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

การจัดการข้อมูลด้วยdplyrทรัพยากรให้ข้อมูลเพิ่มเติมเกี่ยวกับการใช้ dplyr กับ Spark 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() คําสั่งลดความซับซ้อนของการสร้างคอลัมน์ใหม่ที่ระบุว่าค่าในคอลัมน์อื่นเกินเกณฑ์บางอย่างหรือไม่:

mtcars_tbl %>% 
  ft_binarizer("mpg", "over_20", threshold = 20) %>% 
  select(mpg, over_20) %>% 
  head(5)

ทรัพยากรการอ้างอิง -FT มีรายการทั้งหมดของ Spark Feature Transformers ที่พร้อมใช้งานผ่านsparklyr

แชร์ข้อมูลระหว่าง 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)

เยี่ยมชม การอ้างอิง - ML สําหรับรายการของแบบจําลอง Spark ML ที่พร้อมใช้งานผ่าน sparklyr

ยกเลิกการเชื่อมต่อจากคลัสเตอร์ Spark

โทร spark_disconnect()หรือเลือกปุ่ม หยุดเซสชัน ที่ด้านบนของริบบอนสมุดบันทึก เพื่อจบเซสชัน Spark ของคุณ:

spark_disconnect(sc)

เรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชันการทํางานของ R: