从ubuntu Virtual Machine(VirtualBox)从本地SQL-Server读取表



我在带有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()

感谢您的帮助!

最新更新