我在一台以Windows10作为主机操作系统的机器上,我有一台使用virtualbox安装的Ubuntu16.04虚拟机。我还在Windows上运行SQL server,并在我的虚拟机(Ubuntu)上安装了spark-2.1.1-bin-hadoop2.7。
在我的windows机器上,我可以使用pandas使用以下代码从服务器读取表:
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)
我想知道是否可以从虚拟机中使用pyspark从我的SQL Server中读取相同的表。如果有可能,我应该怎么做?
非常感谢!
罗德里戈。
发布于 2017-09-12 05:27:37
是的,但它不会像你的代码中那样来自本地主机,你需要更改为它的公共ip地址(你可以在google上搜索查找我的ip或类似的东西),就像你连接到远程数据库服务一样。
虽然虚拟机运行在同一台计算机上,但资源是完全隔离的
发布于 2017-09-13 02:09:06
好了,我做到了。我使用的代码如下:
# 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()
感谢大家的帮助!
https://stackoverflow.com/questions/46164347
复制相似问题