mysql 如何从odbc sql server中摄取数据来创建一个databricks中的Pyspark?

nsc4cvqm  于 5个月前  发布在  Mysql
关注(0)|答案(2)|浏览(58)

在Azure数据块中,需要连接到ODBC SQL Server中的表并创建一个框架,并在数据块中创建完全相同的表我已经完成了下面的代码,我可以看到附件。如何获得结构化表,创建具有相同信息的框架?你能帮助脚本吗?
下面是我现在所拥有的:

pip install pyodbc
import pyodbc
server = 'XXXXXX-prod-db.database.chinacloudapi.cn'
database = 'database-ods'
username = 'os_reader'
password = 'P@ssword'
table = 'table_record'

cnxn = pyodbc.connect(  
f'DRIVER={{ODBC Driver 17 for SQL Server}};'  
f'SERVER={server};'  
f'DATABASE={database};'  
f'UID={username};'  
f'PWD={password};'  
f'SELECT INTO={table}'  
)  
cursor = cnxn.cursor()
query = "SELECT * FROM " + table  
cursor.execute(query)
rows = cursor.fetchall()
print(rows)

字符串


的数据

mwkjh3gx

mwkjh3gx1#

您可以按照此documentation获取数据。
在这里,有两个选项来获取数据:
1.使用**sqlserver
1.使用
JDBC driver
但是,如果你想使用
ODBC**本身,正如@Anupam Chand提到的,你将不会得到列名。
但是,你可以使用pandas来实现这一点:

p_df = pd.read_sql_query("SELECT * FROM student", cnxn)

s_df = spark.createDataFrame(p_df)
s_df.display()

字符串
在这里,将数据放入pandas框架并将其转换为spark框架。
pd.read_sql_query("<query>", <connection_object>)
Output:
x1c 0d1x的数据

lhcgjxsq

lhcgjxsq2#

你已经标记了MySQL,标题是SQL Server。如果是MySQL或SQL Server,它们都支持JDBC。
Sparksupports JDBC as a data source
左心室,右心室

jdbcDF = spark.read \
    .format("jdbc") \
    .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") \
    .option("url", "jdbc:sqlserver://XXXXXX-prod-db.database.chinacloudapi.cn") \
    .option("query", "SELECT * FROM table_record") \
    # .option("table", "table_record") \ # Same as select * from table
    .option("user", "os_reader") \
    .option("password", "P@ssword") \
    .load()

jdbcDF.show()

字符串
在运行它的时候,你需要确保驱动程序以某种方式安装在你的集群上。

spark-submit --packages com.microsoft.sqlserver:mssql-jdbc:12.4.2.jre11 <your-script.py>

相关问题