Ekstensi bahasa R di SQL Server Machine Learning Services

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru

Artikel ini menjelaskan ekstensi R untuk menjalankan skrip Python eksternal dengan SQL Server Machine Learning Services dan SQL Server 2016 R Services. Ekstensi menambahkan:

  • Lingkungan eksekusi R
  • Distribusi R dasar dengan pustaka dan alat standar
  • Pustaka Microsoft R:
    • RevoScaleR untuk analitik dalam skala besar
    • MicrosoftML untuk algoritma pembelajaran mesin. Hanya berlaku untuk SQL Server 2016, SQL Server 2017, dan SQL Server 2019.
    • Pustaka lain untuk mengakses data atau kode R di SQL Server

Komponen R

SQL Server mencakup paket sumber terbuka dan kepemilikan. Pustaka R dasar diinstal melalui distribusi R sumber terbuka Microsoft: Microsoft R Open (MRO). Pengguna R saat ini harus dapat memindahkan kode R mereka dan menjalankannya sebagai proses eksternal pada SQL Server dengan sedikit atau tanpa modifikasi. MRO dipasang secara independen dari alat SQL, dan dijalankan di luar proses mesin inti, dalam kerangka kerja ekstensibilitas. Selama penginstalan, Anda harus menyetujui ketentuan lisensi sumber terbuka. Setelah itu, Anda dapat menjalankan paket R standar tanpa modifikasi lebih lanjut seperti yang Anda lakukan dalam distribusi sumber terbuka R lainnya.

Untuk SQL Server 2016 (13.x), SQL Server 2017 (14.x), dan SQL Server 2019 (15.x), SQL Server tidak memodifikasi executable R dasar, tetapi Anda harus menggunakan versi R yang diinstal oleh Penyiapan karena versi tersebut adalah versi yang dibangun dan diuji oleh paket kepemilikan. Untuk informasi selengkapnya tentang bagaimana MRO berbeda dari distribusi dasar R yang mungkin Anda dapatkan dari CRAN, lihat Interoperabilitas dengan bahasa R dan produk dan fitur Microsoft R.

Distribusi paket dasar R yang diinstal oleh Penyiapan dapat ditemukan di folder yang terkait dengan instans. Misalnya, jika Anda menginstal Layanan R pada instans default SQL Server, pustaka R terletak di folder ini secara default: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library. Demikian pula, alat R yang terkait dengan instans default akan terletak di folder ini secara default: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\bin.

Paket R yang ditambahkan oleh Microsoft untuk beban kerja paralel dan terdistribusi mencakup pustaka berikut.

Pustaka Deskripsi
RevoScaleR Mendukung objek sumber data dan eksplorasi data, manipulasi, transformasi, dan visualisasi. Ini mendukung pembuatan konteks komputasi jarak jauh, serta berbagai model pembelajaran mesin yang dapat diskalakan, seperti rxLinMod. API telah dioptimalkan untuk menganalisis himpunan data yang terlalu besar agar pas dalam memori dan untuk melakukan komputasi yang didistribusikan melalui beberapa inti atau prosesor. Paket RevoScaleR juga mendukung format file XDF untuk pergerakan dan penyimpanan data yang lebih cepat yang digunakan untuk analisis. Format XDF menggunakan penyimpanan kolumnar, portabel, dan dapat digunakan untuk memuat lalu memanipulasi data dari berbagai sumber, termasuk teks, SPSS, atau koneksi ODBC.
MicrosoftML Berisi algoritma pembelajaran mesin yang telah dioptimalkan untuk kecepatan dan akurasi, serta transformasi in-line untuk bekerja dengan teks dan gambar. Untuk informasi selengkapnya, lihat MicrosoftML di SQL Server. Hanya berlaku untuk SQL Server 2016, SQL Server 2017, dan SQL Server 2019.

Dimulai dengan SQL Server 2022 (16.x), runtime untuk R, Python, dan Java, tidak lagi diinstal dengan Penyiapan SQL. Sebagai gantinya, instal runtime dan paket kustom R dan/atau Python yang Anda inginkan. Untuk informasi selengkapnya, lihat Menginstal SQL Server 2022 Machine Learning Services di Windows atau Menginstal SQL Server Machine Learning Services (Python dan R) di Linux.

Menggunakan R di SQL Server

Anda dapat membuat skrip R menggunakan fungsi dasar, tetapi untuk mendapatkan manfaat dari multi-pemrosesan, Anda harus mengimpor modul RevoScaleR dan MicrosoftML ke dalam kode R Anda, lalu memanggil fungsinya untuk membuat model yang dijalankan secara paralel.

Sumber data yang didukung termasuk database ODBC, SQL Server, dan format file XDF untuk bertukar data dengan sumber lain, atau dengan solusi R. Data input harus tabular. Semua hasil R harus dikembalikan dalam bentuk bingkai data.

Konteks komputasi yang didukung mencakup konteks komputasi SQL Server lokal atau jarak jauh. Konteks komputasi jarak jauh mengacu pada eksekusi kode yang dimulai pada satu komputer seperti stasiun kerja, tetapi kemudian mengalihkan eksekusi skrip ke komputer jarak jauh. Mengalihkan konteks komputasi mengharuskan kedua sistem memiliki pustaka RevoScaleR yang sama.

Konteks komputasi lokal, seperti yang Anda harapkan, termasuk eksekusi kode R pada server yang sama dengan instans mesin database, dengan kode di dalam T-SQL atau disematkan dalam prosedur tersimpan. Anda juga dapat menjalankan kode dari IDE R lokal dan menjalankan skrip di komputer SQL Server, dengan menentukan konteks komputasi jarak jauh.

Arsitektur eksekusi

Diagram berikut menggambarkan interaksi komponen SQL Server dengan runtime R di setiap skenario yang didukung: menjalankan skrip dalam database, dan eksekusi jarak jauh dari baris perintah R, menggunakan konteks komputasi SQL Server.

Skrip R yang dijalankan dari SQL Server dalam database

Kode R yang dijalankan dari SQL Server "dalam" dijalankan dengan memanggil prosedur tersimpan. Dengan demikian, aplikasi apa pun yang dapat melakukan panggilan prosedur tersimpan dapat memulai eksekusi kode R. Setelah itu SQL Server mengelola eksekusi kode R seperti yang dirangkum dalam diagram berikut.

rsql_indb780-01

  1. Permintaan untuk runtime R ditunjukkan oleh parameter @language='R' yang diteruskan ke prosedur tersimpan, sp_execute_external_script. SQL Server mengirimkan permintaan ini ke layanan launchpad. Di Linux, SQL menggunakan layanan launchpadd untuk berkomunikasi dengan proses launchpad terpisah untuk setiap pengguna. Lihat diagram Arsitektur ekstensibilitas untuk detailnya.
  2. Layanan launchpad memulai peluncur yang sesuai; dalam hal ini, RLauncher.
  3. RLauncher memulai proses R eksternal.
  4. BxlServer berkoordinasi dengan runtime R untuk mengelola pertukaran data dengan SQL Server dan penyimpanan hasil kerja.
  5. Satelit SQL mengelola komunikasi tentang tugas dan proses terkait dengan SQL Server.
  6. BxlServer menggunakan Satelit SQL untuk mengomunikasikan status dan hasil ke SQL Server.
  7. SQL Server mendapatkan hasil dan menutup tugas dan proses terkait.

Skrip R yang dijalankan dari klien jarak jauh

Saat menyambungkan dari klien ilmu data jarak jauh yang mendukung Microsoft R, Anda dapat menjalankan fungsi R dalam konteks SQL Server dengan menggunakan fungsi RevoScaleR. Ini adalah alur kerja yang berbeda dari yang sebelumnya, dan diringkas dalam diagram berikut.

rsql_fromR2db-01

  1. Untuk fungsi RevoScaleR, runtime R memanggil fungsi penautan yang pada gilirannya memanggil BxlServer.
  2. BxlServer disediakan dengan Microsoft R dan berjalan dalam proses terpisah dari runtime R.
  3. BxlServer menentukan target koneksi dan memulai koneksi menggunakan ODBC, meneruskan kredensial yang disediakan sebagai bagian dari string koneksi di objek sumber data R.
  4. BxlServer membuka koneksi ke instans SQL Server.
  5. Untuk panggilan R, layanan launchpad dipanggil, yang merupakan gilirannya memulai peluncur yang sesuai, RLauncher. Setelah itu, pemrosesan kode R mirip dengan proses untuk menjalankan kode R dari T-SQL.
  6. RLauncher melakukan panggilan ke instans runtime R yang diinstal pada komputer SQL Server.
  7. Hasil dikembalikan ke BxlServer.
  8. Satelit SQL mengelola komunikasi dengan SQL Server dan pembersihan objek pekerjaan terkait.
  9. SQL Server meneruskan hasil kembali ke klien.

Lihat juga