我在带有Windows 10的计算机上,作为主机OS,我有一个使用VirtualBox安装的Ubuntu 16.04虚拟机。我的虚拟机(Ubuntu)上安装了Windows上的SQL Server,并且在Windows上运行了SPARK-2.1.1-BIN-HADOOP2.7。
在我的Windows机器上,我可以使用以下代码使用大熊猫从服务器读取表:
import pandas as pd
import numpy as np
import pandas.io.sql
import pyodbc
# Parameters
server = 'localhost'
db = 'Claro'
# Create the connection
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=' + server + ';DATABASE=' + db + ';Trusted_Connection=yes')
# query db
sql = """
SELECT *
FROM [Claro].[dbo].[TMP_FRD_CTV_TOTAL]
"""
# Excute Query here
df = pd.read_sql(sql, conn, chunksize=10000)
我想知道是否可以使用Virtual Machine中的Pyspark从我的SQL Server读取同一表。如果可能的话,我该怎么办?
非常感谢!
Rodrigo。
是的,但是它不会像代码中的Localhost一样,您需要更改为公共IP地址(您可以在Google上获取它,只需搜索我的IP或任何内容像这样),就像您连接到远程数据库服务一样。
尽管VM在同一计算机中运行,但资源是完全隔离的
好吧,我做到了。我使用的代码如下:
# Import libraries
import findspark
findspark.init('/home/rodrigo/spark-2.1.1-bin-hadoop2.7')
import pyspark
from pyspark.sql import SparkSession
# Create a spark session
spark = SparkSession.builder.appName("Basics").getOrCreate()
# Read data
df = spark.read.format("jdbc").option("url", "jdbc:sqlserver://10.0.2.2:1433")
.option("dbtable", "[Claro].[dbo].[TMP_FRD_CTV_TOTAL]")
.option("user", "spark").option("password", "1234").load()
感谢您的帮助!