Menggunakan RevoScaleR untuk menginstal paket R
Berlaku untuk: SQL Server 2016 (13.x) SQL Server 2017 (14.x)
Artikel ini menjelaskan cara menggunakan fungsi RevoScaleR (versi 9.0.1 dan yang lebih baru) untuk menginstal paket R di SQL Server dengan layanan Pembelajaran Mesin atau Layanan R. Fungsi RevoScaleR dapat digunakan oleh remote, non-administrator untuk menginstal paket di SQL Server tanpa akses langsung ke server.
Fungsi RevoScaleR untuk manajemen paket
Tabel berikut menjelaskan fungsi yang digunakan untuk penginstalan dan manajemen paket R.
Fungsi | Deskripsi |
---|---|
rxSqlLibPaths | Tentukan jalur pustaka instans di SQL Server jarak jauh. |
rxFindPackage | Mendapatkan jalur untuk satu atau beberapa paket di SQL Server jarak jauh. |
rxInstallPackages | Panggil fungsi ini dari klien R jarak jauh untuk menginstal paket dalam konteks komputasi SQL Server, baik dari repositori tertentu, atau dengan membaca paket zip yang disimpan secara lokal. Fungsi ini memeriksa dependensi dan memastikan bahwa paket terkait dapat diinstal ke SQL Server, sama seperti penginstalan paket R dalam konteks komputasi lokal. Untuk menggunakan opsi ini, Anda harus mengaktifkan manajemen paket di server dan database. Lingkungan klien dan server harus memiliki versi RevoScaleR yang sama. |
rxInstalledPackages | Mendapatkan daftar paket yang diinstal dalam konteks komputasi yang ditentukan. |
rxSyncPackages | Salin informasi tentang pustaka paket antara sistem file dan database, untuk konteks komputasi yang ditentukan. |
rxRemovePackages | Menghapus paket dari konteks komputasi tertentu. Ini juga menghitung dependensi dan memastikan bahwa paket yang tidak lagi digunakan oleh paket lain di SQL Server dihapus, untuk membebaskan sumber daya. |
Prasyarat
Manajemen jarak jauh diaktifkan di SQL Server. Untuk informasi selengkapnya, lihat Mengaktifkan manajemen paket R jarak jauh di SQL Server.
Versi RevoScaleR sama pada lingkungan klien dan server. Untuk informasi selengkapnya, lihat Mendapatkan informasi paket R.
Anda memiliki izin untuk menyambungkan ke server dan database, dan untuk menjalankan perintah R. Anda harus menjadi anggota peran database yang memungkinkan Anda menginstal paket pada instans dan database yang ditentukan.
Paket dalam cakupan bersama dapat diinstal oleh pengguna milik
rpkgs-shared
peran dalam database tertentu. Semua pengguna dalam peran ini dapat menghapus instalan paket bersama.Paket dalam cakupan privat dapat diinstal oleh pengguna mana pun yang termasuk
rpkgs-private
dalam peran dalam database. Namun, pengguna hanya dapat melihat dan menghapus instalan paket mereka sendiri.Pemilik database dapat bekerja dengan paket bersama atau privat.
Sambungan klien
Penting
Dukungan untuk Pembelajaran Mesin Server (sebelumnya dikenal sebagai R Server) berakhir pada 1 Juli 2022. Untuk informasi selengkapnya, lihat Apa yang terjadi pada server Pembelajaran Mesin?
Stasiun kerja klien dapat berupa Klien Microsoft R atau Microsoft Pembelajaran Mesin Server (ilmuwan data sering menggunakan edisi pengembang gratis) di jaringan yang sama.
Saat memanggil fungsi manajemen paket dari klien R jarak jauh, Anda harus membuat objek konteks komputasi terlebih dahulu, menggunakan fungsi RxInSqlServer . Setelah itu, untuk setiap fungsi manajemen paket yang Anda gunakan, berikan konteks komputasi sebagai argumen.
Identitas pengguna biasanya ditentukan saat mengatur konteks komputasi. Jika Anda tidak menentukan nama pengguna dan kata sandi saat membuat konteks komputasi, identitas pengguna yang menjalankan kode R akan digunakan.
Dari baris perintah R, tentukan string koneksi ke instans dan database.
Gunakan konstruktor RxInSqlServer untuk menentukan konteks komputasi SQL Server, menggunakan string koneksi.
sqlcc <- RxInSqlServer(connectionString = myConnString, shareDir = sqlShareDir, wait = sqlWait, consoleOutput = sqlConsoleOutput)
Buat daftar paket yang ingin Anda instal dan simpan daftar dalam variabel string.
packageList <- c("e1071", "mice")
Panggil rxInstallPackages dan berikan konteks komputasi dan variabel string yang berisi nama paket.
rxInstallPackages(pkgs = packageList, verbose = TRUE, computeContext = sqlcc)
Jika paket dependen diperlukan, paket tersebut juga diinstal, dengan asumsi koneksi internet tersedia pada klien.
Paket diinstal menggunakan kredensial pengguna yang membuat koneksi, dalam cakupan default untuk pengguna tersebut.
Memanggil fungsi manajemen paket dalam prosedur tersimpan
Anda dapat menjalankan fungsi manajemen paket di dalam sp_execute_external_script
. Saat Anda melakukannya, fungsi dijalankan menggunakan konteks keamanan pemanggil prosedur tersimpan.
Contoh
Bagian ini menyediakan contoh cara menggunakan fungsi-fungsi ini dari klien jarak jauh saat menyambungkan ke instans atau database SQL Server sebagai konteks komputasi.
Untuk semua contoh, Anda harus menyediakan string koneksi, atau konteks komputasi, yang memerlukan string koneksi. Contoh ini menyediakan salah satu cara untuk membuat konteks komputasi untuk SQL Server:
instance_name <- "computer-name/instance-name";
database_name <- "TestDB";
sqlWait= TRUE;
sqlConsoleOutput <- TRUE;
connString <- paste("Driver=SQL Server;Server=", instance_name, ";Database=", database_name, ";Trusted_Connection=true;", sep="");
sqlcc <- RxInSqlServer(connectionString = connString, wait = sqlWait, consoleOutput = sqlConsoleOutput, numTasks = 4);
Tergantung di mana server berada, dan model keamanan, Anda mungkin perlu memberikan spesifikasi domain dan subnet di string koneksi, atau menggunakan login SQL. Contohnya:
connStr <- "Driver=SQL Server;Server=myserver.financeweb.contoso.com;Database=Finance;Uid=RUser1;Pwd=RUserPassword"
Mendapatkan jalur paket pada konteks komputasi SQL Server jarak jauh
Contoh ini mendapatkan jalur untuk paket RevoScaleR pada konteks komputasi, sqlcc
.
sqlPackagePaths <- rxFindPackage(package = "RevoScaleR", computeContext = sqlcc)
print(sqlPackagePaths)
Hasil
"C:/Program Files/Microsoft SQL Server/MSSQL14. MSSQLSERVER/R_SERVICES/library/RevoScaleR"
Tip
Jika Anda telah mengaktifkan opsi untuk melihat output konsol SQL, Anda mungkin mendapatkan pesan status dari fungsi yang mendahului print
pernyataan. Setelah Anda selesai menguji kode, atur consoleOutput
ke FALSE di konstruktor konteks komputasi untuk menghilangkan pesan.
Mendapatkan lokasi untuk beberapa paket
Contoh berikut mendapatkan jalur untuk paket RevoScaleR dan lattice , pada konteks komputasi, sqlcc
. Untuk mendapatkan informasi tentang beberapa paket, berikan vektor string yang berisi nama paket.
packagePaths <- rxFindPackage(package = c("RevoScaleR", "lattice"), computeContext = sqlcc)
print(packagePaths)
Mendapatkan versi paket pada konteks komputasi jarak jauh
Jalankan perintah ini dari konsol R untuk mendapatkan nomor build dan nomor versi untuk paket yang diinstal pada konteks komputasi, sqlServer.
sqlPackages <- rxInstalledPackages(fields = c("Package", "Version", "Built"), computeContext = sqlServer)
Menginstal paket di SQL Server
Contoh ini menginstal paket prakiraan dan dependensinya ke dalam konteks komputasi.
pkgs <- c("forecast")
rxInstallPackages(pkgs = pkgs, verbose = TRUE, scope = "private", computeContext = sqlcc)
Menghapus paket dari SQL Server
Contoh ini menghapus paket prakiraan dan dependensinya dari konteks komputasi.
pkgs <- c("forecast")
rxRemovePackages(pkgs = pkgs, verbose = TRUE, scope = "private", computeContext = sqlcc)
Menyinkronkan paket antara database dan sistem file
Contoh berikut memeriksa TestDB database, dan menentukan apakah semua paket diinstal dalam sistem file. Jika beberapa paket hilang, paket tersebut diinstal dalam sistem file.
# Instantiate the compute context
connectionString <- "Driver=SQL Server;Server=myServer;Database=TestDB;Trusted_Connection=True;"
computeContext <- RxInSqlServer(connectionString = connectionString )
# Synchronize the packages in the file system for all scopes and users
rxSyncPackages(computeContext=computeContext, verbose=TRUE)
Sinkronisasi paket berfungsi berdasarkan per database dan per pengguna. Untuk informasi selengkapnya, lihat Sinkronisasi paket R untuk SQL Server.
Menggunakan prosedur tersimpan untuk mencantumkan paket di SQL Server
Jalankan perintah ini dari Management Studio atau alat lain yang mendukung T-SQL, untuk mendapatkan daftar paket yang diinstal pada instans saat ini, menggunakan rxInstalledPackages
dalam prosedur tersimpan.
EXEC sp_execute_external_script
@language=N'R',
@script=N'
myPackages <- rxInstalledPackages();
OutputDataSet <- as.data.frame(myPackages);
'
Fungsi rxSqlLibPaths
ini dapat digunakan untuk menentukan pustaka aktif yang digunakan oleh SQL Server Pembelajaran Mesin Services. Skrip ini hanya dapat mengembalikan jalur pustaka untuk server saat ini.
declare @instance_name nvarchar(100) = @@SERVERNAME, @database_name nvarchar(128) = db_name();
exec sp_execute_external_script
@language = N'R',
@script = N'
connStr <- paste("Driver=SQL Server;Server=", instance_name, ";Database=", database_name, ";Trusted_Connection=true;", sep="");
.libPaths(rxSqlLibPaths(connStr));
print(.libPaths());
',
@input_data_1 = N'',
@params = N'@instance_name nvarchar(100), @database_name nvarchar(128)',
@instance_name = @instance_name,
@database_name = @database_name;