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 non-administrator jarak jauh untuk menginstal paket pada 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 pada 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 pada SQL Server dihapus, untuk membebaskan sumber daya.

Prasyarat

  • Manajemen jarak jauh diaktifkan pada SQL Server. Untuk informasi selengkapnya, lihat Mengaktifkan manajemen paket R jarak jauh pada 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 Server Pembelajaran Mesin (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 Machine Learning 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.

  1. Dari baris perintah R, tentukan string koneksi ke instans dan database.

  2. Gunakan konstruktor RxInSqlServer untuk menentukan konteks komputasi SQL Server, menggunakan string koneksi.

    sqlcc <- RxInSqlServer(connectionString = myConnString, shareDir = sqlShareDir, wait = sqlWait, consoleOutput = sqlConsoleOutput)
    
  3. Buat daftar paket yang ingin Anda instal dan simpan daftar dalam variabel string.

    packageList <- c("e1071", "mice")
    
  4. 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 juga diinstal, dengan asumsi koneksi internet tersedia di 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. Ketika Anda melakukannya, fungsi dijalankan menggunakan konteks keamanan pemanggil prosedur tersimpan.

Contoh

Bagian ini menyediakan contoh cara menggunakan 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);

Bergantung pada di mana server berada, dan model keamanan, Anda mungkin perlu memberikan spesifikasi domain dan subnet dalam 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 kisi , 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 database TestDB, 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 pada basis per database dan per pengguna. Untuk informasi selengkapnya, lihat Sinkronisasi paket R untuk SQL Server.

Gunakan 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 ini rxSqlLibPaths dapat digunakan untuk menentukan pustaka aktif yang digunakan oleh SQL Server Machine Learning 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;

Lihat juga