Я пытаюсь запросить базу данных SQL через соединение jdb c в блоках данных и сохранить результаты запроса как pandas фрейм данных. Все методы, которые я могу найти для этого в Интернете, включают его сохранение как тип объекта Spark, сначала с использованием кода Scala, а затем преобразование его в pandas. Я пробовал для ячейки 1:
%scala
val df_table1 = sqlContext.read.format("jdbc").options(Map(
("url" -> "jdbc:sqlserver://myserver.database.windows.net:1433;database=mydb"),
("dbtable" -> "(select top 10 * from myschema.table) as table"),
("user" -> "user"),
("password" -> "password123"),
("driver" -> "com.microsoft.sqlserver.jdbc.SQLServerDriver"))
).load()
, что дает:
df_table1: org.apache.spark.sql.DataFrame = [var1: int, var2: string ... 50 more fields]
Отлично! Но когда я пытаюсь преобразовать его в pandas df в ячейке 2, чтобы я мог его использовать:
import numpy as np
import pandas as pd
result_pdf = df_table1.select("*").toPandas()
print(result_pdf)
Он генерирует сообщение об ошибке:
NameError: name 'df_table1' is not defined
Как мне успешно преобразовать этот объект в фрейм данных pandas или, альтернативно, есть ли способ запросить базу данных SQL через соединение jdb c с использованием кода python без необходимости использовать Scala вообще (мне не особенно нравится Scala синтаксис и предпочел бы избежать его, если это вообще возможно)?