मुख्य सामग्री पर जाएँ

SQL में रिमोट Python और R

जानें कि Jupyter Notebooks से SQL Server पर R और Python का निष्पादन रिमोटली कैसे भेजें।
· 7 मि॰ पढ़ें

AI के साथ खोजें

run r and python in sql server from any ide

परिचय

क्या आप जानते हैं कि आप Jupyter Notebooks या किसी भी IDE से SQL Server में R और Python कोड रिमोटली चला सकते हैं? SQL Server में Machine Learning Services डेटा को इधर-उधर ले जाने की आवश्यकता खत्म कर देता है। बड़े और संवेदनशील डेटा को नेटवर्क पर ट्रांसफर करने या सैंपल csv फ़ाइलों से ML प्रशिक्षण में सटीकता खोने के बजाय, आप अपना R/Python कोड सीधे अपने डेटाबेस के भीतर चला सकते हैं। आप Jupyter Notebooks, RStudio, PyCharm, VSCode, Visual Studio—जहाँ चाहें—में काम करें और फिर फ़ंक्शन निष्पादन को SQL Server पर भेजें, ताकि बुद्धिमत्ता वहीं आए जहाँ आपका डेटा रहता है।

यह ट्यूटोरियल एक उदाहरण दिखाएगा कि आप Juptyter notebooks से अपना python कोड SQL Server के भीतर चलाने के लिए कैसे भेज सकते हैं। यही सिद्धांत R और किसी भी अन्य IDE पर भी लागू होता है। यदि आप वीडियो के ज़रिए सीखना पसंद करते हैं, तो यह ट्यूटोरियल YouTube पर यहाँ उपलब्ध है:

https://youtu.be/D5erljpJDjE

How To Run R & Python in SQL Server from Jupyter Notebooks or any IDE

पर्यावरण सेटअप: पूर्वापेक्षाएँ

1. SQL Server पर ML Services इंस्टॉल करें

SQL के भीतर R या Python चलाने के लिए, सबसे पहले आपको Machine Learning Services फ़ीचर इंस्टॉल और कॉन्फ़िगर करना होगा। यह हाउ-टू गाइड देखें।

2. Microsoft के Python Client के माध्यम से RevoscalePy इंस्टॉल करें

Jupyter Notebooks से SQL पर Python निष्पादन भेजने के लिए, आपको Microsoft का RevoscalePy पैकेज उपयोग करना होगा। RevoscalePy पाने के लिए, Microsoft का ML Services Python Client डाउनलोड और इंस्टॉल करें। डॉक्यूमेंटेशन पेज या डायरेक्ट डाउनलोड लिंक (Windows के लिए)।

डाउनलोड करने के बाद, powershell को व्यवस्थापक के रूप में खोलें और डाउनलोड फ़ोल्डर पर जाएँ। इस कमांड से इंस्टॉलेशन शुरू करें (इंस्टॉल फ़ोल्डर को अपनी आवश्यकता अनुसार बदल सकते हैं): .\\Install-PyForMLS.ps1 -InstallFolder "C:\\Program Files\\MicrosoftPythonClient"

इंस्टॉलेशन में थोड़ा समय लग सकता है, धैर्य रखें। इंस्टॉल हो जाने पर उस नए पथ पर जाएँ जहाँ आपने इंस्टॉल किया है। एक खाली फ़ोल्डर बनाएँ और Jupyter Notebooks खोलें: mkdir JupyterNotebooks; cd JupyterNotebooks; ..\\Scripts\\jupyter-notebook

Python 3 इंटरप्रेटर के साथ नया नोटबुक बनाएँ:

create new notebook with python 3 interpreter

जाँचने के लिए कि सब कुछ सेट है, पहले सेल में revoscalepy इम्पोर्ट करें और चलाएँ। यदि कोई त्रुटि संदेश नहीं आता, तो आप आगे बढ़ने के लिए तैयार हैं।

import revoscalepy

डेटाबेस सेटअप (सिर्फ़ इस ट्यूटोरियल के लिए आवश्यक)

ट्यूटोरियल के शेष भाग के लिए, यदि आप सारा कोड कॉपी-पेस्ट नहीं करना चाहते, तो आप यह Jupyter Notebook Github से क्लोन कर सकते हैं। यह डेटाबेस सेटअप एक बार का चरण है ताकि आपके पास इस ट्यूटोरियल जैसा ही डेटा हो। अपना डेटा इस्तेमाल करने के लिए आपको इनमें से कोई भी सेटअप स्टेप करने की आवश्यकता नहीं है।

1. एक डेटाबेस बनाएँ

अपने सर्वर के लिए कनेक्शन स्ट्रिंग संशोधित करें और pyodbc का उपयोग करके नया डेटाबेस बनाएँ।

 import pyodbc

# creating a new db to load Iris sample in
new_db_name = "MLRemoteExec"
connection_string = "Driver=SQL Server;Server=localhost\MSSQLSERVER2017;Database={0};Trusted_Connection=Yes;"
cnxn = pyodbc.connect(connection_string.format("master"), autocommit=True)
cnxn.cursor().execute("IF EXISTS(SELECT * FROM sys.databases WHERE [name] = '{0}') DROP DATABASE {0}".format(new_db_name))
cnxn.cursor().execute("CREATE DATABASE " + new_db_name)
cnxn.close()

print("Database created")

2. SkLearn से Iris सैंपल इम्पोर्ट करें

Iris शुरुआती डेटा साइंस ट्यूटोरियल्स के लिए एक लोकप्रिय डेटासेट है। यह sklearn पैकेज में डिफ़ॉल्ट रूप से शामिल है।

from sklearn import datasets
import pandas as pd

# SkLearn has the Iris sample dataset built into the package
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)

3. RecoscalePy API का उपयोग करके एक टेबल बनाएँ और Iris डेटा लोड करें

(आप यह काम pyodbc, sqlalchemy या अन्य पैकेजों से भी कर सकते हैं)

 from revoscalepy import RxSqlServerData, rx_data_step

# Example of using RX APIs to load data into SQL table. You can also do this with pyodbc
table_ref = RxSqlServerData(connection_string=connection_string.format(new_db_name), table="Iris")
rx_data_step(input_data = df, output_file = table_ref, overwrite = True)

print("New Table Created: Iris")
print("Sklearn Iris sample loaded into Iris table")

SQL Server को भेजने के लिए एक फ़ंक्शन परिभाषित करें

जो भी python कोड आप SQL में चलाना चाहते हैं, लिखें। इस उदाहरण में, हम iris डेटासेट पर एक स्कैटर मैट्रिक्स बना रहे हैं और केवल .png की बाइटस्ट्रीम को Jupyter Notebooks में वापस भेज रहे हैं ताकि उसे हमारे क्लाइंट पर रेंडर किया जा सके।

def send_this_func_to_sql():from revoscalepy import RxSqlServerData, rx_import
    from pandas.tools.plotting import scatter_matrix
    import matplotlib.pyplot as plt
    import io

    # remember the scope of the variables in this func are within our SQL Server Python Runtime
    connection_string = "Driver=SQL Server;Server=localhost\MSSQLSERVER2017;Database=MLRemoteExec;Trusted_Connection=Yes;"# specify a query and load into pandas dataframe df
    sql_query = RxSqlServerData(connection_string=connection_string, sql_query = "select * from Iris")
    df = rx_import(sql_query)

    scatter_matrix(df)

    # return bytestream of image created by scatter_matrix
    buf = io.BytesIO()
    plt.savefig(buf, format="png")
    buf.seek(0)

    return buf.getvalue()

निष्पादन SQL पर भेजें

अब जब हम सेटअप पूरा कर चुके हैं, देखें कि रिमोट निष्पादन भेजना वास्तव में कितना आसान है! पहले import revoscalepy करें। एक sql_compute_context बनाएँ, और फिर किसी भी फ़ंक्शन का निष्पादन RxExec के साथ सहज रूप से SQL Server पर भेज दें। SQL से Jupyter Notebook में कोई कच्चा डेटा ट्रांसफर नहीं हुआ। सारा कंप्यूटेशन डेटाबेस के भीतर हुआ, और सिर्फ़ इमेज फ़ाइल डिस्प्ले के लिए वापस आई।

from IPython import display
import matplotlib.pyplot as plt
from revoscalepy import RxInSqlServer, rx_exec

# create a remote compute context with connection to SQL Server
sql_compute_context = RxInSqlServer(connection_string=connection_string.format(new_db_name))

# use rx_exec to send the function execution to SQL Server
image = rx_exec(send_this_func_to_sql, compute_context=sql_compute_context)[0]

# only an image was returned to my jupyter client. All data remained secure and was manipulated in my db.
display.Image(data=image)

हालाँकि यह उदाहरण Iris डेटासेट के साथ साधारण है, कल्पना करें कि आपने अब कितनी अतिरिक्त स्केल, परफ़ॉर्मेंस और सुरक्षा क्षमताएँ अनलॉक कर दी हैं। आप SQL Server में बड़े पैमाने के डेटा पर Deep Learning और AI अनुप्रयोग बनाने के लिए नवीनतम ओपन सोर्स R/Python पैकेजों का उपयोग कर सकते हैं। हम Microsoft के अग्रणी उच्च-प्रदर्शन एल्गोरिदम RevoScaleR और RevoScalePy API में भी उपलब्ध कराते हैं। इन्हें ओपन सोर्स दुनिया के नए नवाचारों के साथ उपयोग करने से आप अपने अनुप्रयोगों में बेजोड़ विकल्प, प्रदर्शन और स्केल ला सकते हैं।

और जानें

DataCamp का ट्यूटोरियल देखें: How to Execute Python/R in SQL।

SQL Machine Learning Services Documentation देखें, ताकि आप सीख सकें कि SQL स्टोरड प्रोसिजर्स के साथ अपना R/Python कोड आसानी से कैसे परिनियोजित करें, जिससे वे आपके ETL प्रक्रियाओं या किसी भी एप्लिकेशन में सुलभ हों। अपने डेटाबेस में मशीन लर्निंग मॉडल प्रशिक्षित करें और स्टोर करें, ताकि बुद्धिमत्ता वहीं आए जहाँ आपका डेटा रहता है।

SQL Server में बेसिक R और Python निष्पादन: https://aka.ms/BasicMLServicesExecution

SQL Server में Machine Learning Services सेटअप करें: https://aka.ms/SetupMLServices

Github पर एंड-टू-एंड ट्यूटोरियल समाधान: https://microsoft.github.io/sql-ml-tutorials/

अन्य YouTube ट्यूटोरियल्स:

यदि आप और सीखने में रुचि रखते हैं, तो DataCamp के शुरुआती पाठ्यक्रम देखें।

विषय