Menyiapkan klien ilmu data untuk pengembangan R di SQL Server

Berlaku untuk: SQL Server 2016 (13.x), SQL Server 2017 (14.x), dan SQL Server 2019 (15.x), SQL Server 2019 (15.x) - Linux

Integrasi R tersedia di SQL Server 2016 atau yang lebih baru saat Anda menyertakan opsi bahasa R dalam penginstalan SQL Server 2016 R Services atau SQL Server Machine Learning Services (In-Database).

Catatan

Saat ini artikel ini berlaku untuk SQL Server 2016 (13.x), SQL Server 2017 (14.x), SQL Server 2019 (15.x), dan SQL Server 2019 (15.x) hanya untuk Linux.

Untuk mengembangkan dan menyebarkan solusi R untuk SQL Server, instal Klien Microsoft R di stasiun kerja pengembangan Anda untuk mendapatkan RevoScaleR dan pustaka R lainnya. Pustaka RevoScaleR, yang juga diperlukan pada instans SQL Server jarak jauh, mengoordinasikan permintaan komputasi antara kedua sistem.

Dalam artikel ini, pelajari cara mengonfigurasi stasiun kerja pengembangan klien R sehingga Anda dapat berinteraksi dengan SQL Server jarak jauh yang diaktifkan untuk pembelajaran mesin dan integrasi R. Setelah menyelesaikan langkah-langkah dalam artikel ini, Anda akan memiliki pustaka R yang sama dengan yang ada di SQL Server. Anda juga akan tahu cara mendorong komputasi dari sesi R lokal ke sesi R jarak jauh pada SQL Server.

Komponen server klien

Untuk memvalidasi penginstalan, Anda dapat menggunakan alat RGUI bawaan seperti yang dijelaskan dalam artikel ini, atau menautkan pustaka ke RStudio atau IDE lain yang biasanya Anda gunakan.

Alat yang umum digunakan

Baik Anda adalah pengembang R yang baru menggunakan SQL, atau pengembang SQL yang baru menggunakan R dan analitik dalam database, Anda akan memerlukan alat pengembangan R dan editor kueri T-SQL seperti SQL Server Management Studio (SSMS) untuk menjalankan semua kemampuan analitik dalam database.

Untuk skenario pengembangan R sederhana, Anda dapat menggunakan RGUI yang dapat dieksekusi, dibundel dalam distribusi R dasar di MRO dan SQL Server. Artikel ini menjelaskan cara menggunakan RGUI untuk sesi R lokal dan jarak jauh. Untuk meningkatkan produktivitas, Anda harus menggunakan IDE berfungsi lengkap seperti RStudio atau Visual Studio.

SSMS adalah unduhan terpisah, berguna untuk membuat dan menjalankan prosedur tersimpan pada SQL Server, termasuk yang berisi kode R. Hampir semua kode R yang Anda tulis di lingkungan pengembangan dapat disematkan dalam prosedur tersimpan. Anda dapat menelusuri tutorial lain untuk mempelajari tentang SSMS dan R yang disematkan.

1 - Menginstal paket R

Paket R Microsoft tersedia dalam beberapa produk dan layanan. Di stasiun kerja lokal, sebaiknya instal Klien Microsoft R. Klien R menyediakan RevoScaleR, MicrosoftML, SQLRUtils, dan paket R lainnya.

  1. Unduh Klien Microsoft R.

  2. Dalam wizard penginstalan, terima atau ubah jalur penginstalan default, terima atau ubah daftar komponen, dan terima ketentuan lisensi Klien Microsoft R.

    Setelah penginstalan selesai, layar selamat datang memperkenalkan Anda ke produk dan dokumentasi.

  3. Buat variabel lingkungan sistem MKL_CBWR untuk memastikan output yang konsisten pada perhitungan Intel Math Kernel Library (MKL).

    • Di Panel Kontrol, pilihVariabel LingkunganPengaturan> Sistem danSistem>Keamanan> Tingkat Lanjut.
    • Buat variabel Sistem baru bernama MKL_CBWR, dengan nilai diatur ke OTOMATIS.

2 - Temukan executable

Temukan dan cantumkan konten folder penginstalan untuk mengonfirmasi bahwa R.exe, RGUI, dan paket lainnya diinstal.

  1. Di File Explorer, buka %ProgramFiles%\Microsoft\R Client\R_SERVER\bin folder untuk mengonfirmasi lokasi R.exe.

  2. Buka subfolder x64 untuk mengonfirmasi RGUI. Anda akan menggunakan alat ini di langkah berikutnya.

  3. Buka %ProgramFiles%\Microsoft\R Client\R_SERVER\library untuk meninjau daftar paket yang diinstal dengan Klien R, termasuk RevoScaleR, MicrosoftML, dan lainnya.

3 - Mulai RGUI

Ketika Anda menginstal R dengan SQL Server, Anda mendapatkan alat R yang sama yang standar untuk penginstalan dasar R apa pun, seperti RGui, Rterm, dan sebagainya. Alat-alat ini ringan, berguna untuk memeriksa informasi paket dan pustaka, menjalankan perintah atau skrip ad hoc, atau melangkah melalui tutorial. Anda dapat menggunakan alat ini untuk mendapatkan informasi versi R dan mengonfirmasi konektivitas.

  1. Buka %ProgramFiles%\Microsoft\R Client\R_SERVER\bin\x64 dan klik dua kali RGui untuk memulai sesi R dengan prompt perintah R.

    Saat Anda memulai sesi R dari folder program Microsoft, beberapa paket, termasuk RevoScaleR, muat secara otomatis.

  2. Masukkan print(Revo.version) di prompt perintah untuk mengembalikan informasi versi paket RevoScaleR. Anda harus memiliki versi 9.2.1 atau 9.3.0 untuk RevoScaleR.

  3. Masukkan search() pada permintaan R untuk daftar paket yang diinstal.

    Informasi versi saat memuat perintah R

4 - Mendapatkan izin SQL

Di Klien R, pemrosesan R dibatasi pada dua utas dan data dalam memori. Untuk pemrosesan yang dapat diskalakan menggunakan beberapa inti dan himpunan data besar, Anda dapat mengalihkan eksekusi (disebut sebagai konteks komputasi) ke himpunan data dan kekuatan komputasi instans SQL Server jarak jauh. Ini adalah pendekatan yang direkomendasikan untuk integrasi klien dengan instans SQL Server produksi, dan Anda akan memerlukan izin dan informasi koneksi untuk membuatnya berfungsi.

Untuk menyambungkan ke instans SQL Server untuk menjalankan skrip dan mengunggah data, Anda harus memiliki login yang valid di server database. Anda dapat menggunakan login SQL atau autentikasi Windows terintegrasi. Kami umumnya menyarankan agar Anda menggunakan autentikasi terintegrasi Windows, tetapi menggunakan login SQL lebih sederhana untuk beberapa skenario, terutama ketika skrip Anda berisi string koneksi ke data eksternal.

Minimal, akun yang digunakan untuk menjalankan kode harus memiliki izin untuk membaca dari database yang sedang Anda kerjakan, ditambah izin khusus EXECUTE ANY EXTERNAL SCRIPT. Sebagian besar pengembang juga memerlukan izin untuk membuat prosedur tersimpan, dan menulis data ke dalam tabel yang berisi data pelatihan atau data skor.

Minta administrator database untuk mengonfigurasi izin berikut untuk akun Anda, di database tempat Anda menggunakan R:

  • JALANKAN SKRIP EKSTERNAL APA PUN untuk menjalankan skrip R di server.
  • db_datareader hak istimewa untuk menjalankan kueri yang digunakan untuk melatih model.
  • db_datawriter untuk menulis data pelatihan atau data skor.
  • db_owner untuk membuat objek seperti prosedur tersimpan, tabel, fungsi. Anda juga memerlukan db_owner untuk membuat database sampel dan pengujian.

Jika kode Anda memerlukan paket yang tidak diinstal secara default dengan SQL Server, atur dengan administrator database agar paket diinstal dengan instans. SQL Server adalah lingkungan yang aman dan ada batasan di mana paket dapat diinstal. Untuk informasi selengkapnya, lihat Menginstal paket R baru di SQL Server.

5 - Uji koneksi

Sebagai langkah verifikasi, gunakan RGUI dan RevoScaleR untuk mengonfirmasi konektivitas ke server jarak jauh. SQL Server harus diaktifkan untuk koneksi jarak jauh dan Anda harus memiliki izin, termasuk login pengguna dan database untuk disambungkan.

Langkah-langkah berikut mengasumsikan database demo, NYCTaxi_Sample, dan autentikasi Windows.

  1. Buka RGUI di stasiun kerja klien. Misalnya, buka ~\Program Files\Microsoft SQL Server\140\R_SERVER\bin\x64 dan klik dua kali RGui.exe untuk memulainya.

  2. RevoScaleR dimuat secara otomatis. Konfirmasikan Bahwa RevoScaleR beroperasi dengan menjalankan perintah ini: print(Revo.version)

  3. Masukkan skrip demo yang dijalankan di server jarak jauh. Anda harus mengubah contoh skrip berikut untuk menyertakan nama yang valid untuk instans SQL Server jarak jauh. Sesi ini dimulai sebagai sesi lokal, tetapi fungsi rxSummary dijalankan pada instans SQL Server jarak jauh.

    # Define a connection. Replace server with a valid server name.
    connStr <- "Driver=SQL Server;Server=<your-server-name>;Database=NYCTaxi_Sample;Trusted_Connection=true"
    
    # Specify the input data in a SQL query.
    sampleQuery <-"SELECT DISTINCT TOP(100) tip_amount FROM [dbo].nyctaxi_sample ORDER BY tip_amount DESC;"
    
    # Define a remote compute context based on the remote server.
    cc <-RxInSqlServer(connectionString=connStr)
    
    # Execute the function using the remote compute context.
    rxSummary(formula = ~ ., data = RxSqlServerData(sqlQuery=sampleQuery, connectionString=connStr), computeContext=cc)
    

    Hasil:

    Skrip ini tersambung ke database di server jarak jauh, menyediakan kueri, membuat instruksi konteks cc komputasi untuk eksekusi kode jarak jauh, lalu menyediakan fungsi RevoScaleR rxSummary untuk mengembalikan ringkasan statistik hasil kueri.

      Call:
    rxSummary(formula = ~., data = RxSqlServerData(sqlQuery = sampleQuery, 
        connectionString = connStr), computeContext = cc)
    
    Summary Statistics Results for: ~.
    Data: RxSqlServerData(sqlQuery = sampleQuery, connectionString = connStr) (RxSqlServerData Data Source)
    Number of valid observations: 100 
    
    Name       Mean   StdDev   Min Max ValidObs MissingObs
    tip_amount 63.245 31.61087 36  180 100      0     
    
  4. Dapatkan dan atur konteks komputasi. Setelah Anda mengatur konteks komputasi, konteks tersebut tetap berlaku selama durasi sesi. Jika Anda tidak yakin apakah komputasi lokal atau jarak jauh, jalankan perintah berikut untuk mengetahuinya. Hasil yang menentukan string koneksi menunjukkan konteks komputasi jarak jauh.

    # Return the current compute context.
    rxGetComputeContext()
    
    # Revert to a local compute context.
    rxSetComputeContext("local")
    rxGetComputeContext()
    
    # Switch back to remote.
    connStr <- "Driver=SQL Server;Server=<your-server-name>;Database=NYCTaxi_Sample;Trusted_Connection=true"
    cc <-RxInSqlServer(connectionString=connStr)
    rxSetComputeContext(cc)
    rxGetComputeContext()
    
  5. Mengembalikan informasi tentang variabel dalam sumber data, termasuk nama dan jenis.

    rxGetVarInfo(data = inDataSource)
    

    Hasilnya termasuk 23 variabel.

  6. Buat plot sebar untuk mengeksplorasi apakah ada dependensi antara dua variabel.

    # Set the connection string. Substitute a valid server name for the placeholder.
    connStr <- "Driver=SQL Server;Server=<your database name>;Database=NYCTaxi_Sample;Trusted_Connection=true"
    
    # Specify a query on the nyctaxi_sample table.
    # For variables on each axis, remove nulls. Use a WHERE clause and <> to do this.
    sampleQuery <-"SELECT DISTINCT TOP 100 * from [dbo].[nyctaxi_sample] WHERE fare_amount <> '' AND  tip_amount <> ''"
    cc <-RxInSqlServer(connectionString=connStr)
    
    # Generate a scatter plot.
    rxLinePlot(fare_amount ~ tip_amount, data = RxSqlServerData(sqlQuery=sampleQuery, connectionString=connStr, computeContext=cc), type="p")
    

    Cuplikan layar berikut menunjukkan input dan output plot sebar.

    Plot sebar di RGUI

Untuk proyek pengembangan berkelanjutan dan serius, Anda harus menginstal lingkungan pengembangan terpadu (IDE). alat SQL Server dan alat R bawaan tidak dilengkapi untuk pengembangan R yang berat. Setelah anda memiliki kode kerja, Anda dapat menyebarkannya sebagai prosedur tersimpan untuk eksekusi pada SQL Server.

Arahkan IDE Anda ke pustaka R lokal: base R, RevoScaleR, dan sebagainya. Menjalankan beban kerja pada SQL Server jarak jauh terjadi selama eksekusi skrip, ketika skrip Anda memanggil konteks komputasi jarak jauh pada SQL Server, mengakses data dan operasi di server tersebut.

RStudio

Saat menggunakan RStudio, Anda dapat mengonfigurasi lingkungan untuk menggunakan pustaka R dan executable yang sesuai dengan yang ada di SQL Server jarak jauh.

  1. Periksa versi paket R yang diinstal pada SQL Server. Untuk informasi selengkapnya, lihat Mendapatkan informasi paket R.

  2. Instal Klien Microsoft R untuk menambahkan RevoScaleR dan paket R lainnya, termasuk distribusi R dasar yang digunakan oleh instans SQL Server Anda. Pilih versi pada tingkat yang sama atau lebih rendah (paket kompatibel mundur) yang menyediakan versi paket yang sama seperti pada server. Untuk melihat versi paket yang diinstal di server, lihat Mencantumkan semua paket R yang diinstal.

  3. Di RStudio, perbarui jalur R Anda untuk menunjuk ke lingkungan R yang menyediakan RevoScaleR, Microsoft R Open, dan paket Microsoft lainnya. Cari %ProgramFiles%\Microsoft\R Client\R_SERVER\bin\x64.

  4. Tutup lalu buka RStudio.

Ketika Anda membuka kembali RStudio, R yang dapat dieksekusi dari Klien R adalah mesin R default.

Alat R untuk Visual Studio (RTVS)

Jika Anda belum memiliki IDE pilihan untuk R, kami sarankan R Tools for Visual Studio.

Menyambungkan ke SQL Server dari RTVS

Contoh ini menggunakan Visual Studio 2017 Community Edition, dengan beban kerja ilmu data terinstal.

  1. Dari menu File , pilih Baru lalu pilih Proyek.

  2. Panel sebelah kiri berisi daftar templat yang telah diinstal sebelumnya. Pilih R, dan pilih Proyek R. Dalam kotak Nama , ketik dbtest dan pilih OK.

    Visual Studio membuat folder proyek baru dan file skrip default, Script.R.

  3. Ketik .libPaths() pada baris pertama file skrip, lalu tekan CTRL + ENTER.

    Jalur pustaka R saat ini harus ditampilkan di jendela Interaktif R .

  4. Pilih menu R Tools dan pilih Windows untuk melihat daftar jendela khusus R lainnya yang bisa Anda tampilkan di ruang kerja Anda.

    • Lihat bantuan pada paket di pustaka saat ini dengan menekan CTRL + 3.
    • Lihat variabel R di Penjelajah Variabel, dengan menekan CTRL + 8.

Langkah berikutnya

Dua tutorial berbeda termasuk latihan sehingga Anda dapat berlatih mengalihkan konteks komputasi dari lokal ke instans SQL Server jarak jauh.