Я использую записную книжку Databricks и пытаюсь экспортировать мой фрейм данных в виде CSV на мою локальную машину после запроса. Тем не менее, это не сохраняет мой CSV на моей локальной машине. Почему?
Подключиться к базе данных
#SQL Connector
import pandas as pd
import psycopg2
import numpy as np
from pyspark.sql import *
#Connection
cnx = psycopg2.connect(dbname= 'test', host='test', port= '1234', user= 'test', password= 'test')
cursor = cnx.cursor()
SQL-запрос
query = """
SELECT * from products;
"""
# Execute the query
try:
cursor.execute(query)
except OperationalError as msg:
print ("Command skipped: ")
#Fetch all rows from the result
rows = cursor.fetchall()
# Convert into a Pandas Dataframe
df = pd.DataFrame( [[ij for ij in i] for i in rows] )
Экспорт данных в формате CSV на локальный компьютер
df.to_csv('test.csv')
Это НЕ дает никакой ошибки, но когда я захожу на значок поиска моего компьютера Mac, чтобы найти «test.csv», он не существует. Я предполагаю, что операция не сработала, поэтому файл никогда не сохранялся с облачного сервера Databricks на мою локальную машину ... Кто-нибудь знает, как это исправить?
3 ответа
Выберите из SQL Server:
import pypyodbc
cnxn = pypyodbc.connect("Driver={SQL Server Native Client 11.0};"
"Server=Server_Name;"
"Database=TestDB;"
"Trusted_Connection=yes;")
#cursor = cnxn.cursor()
#cursor.execute("select * from Actions")
cursor = cnxn.cursor()
cursor.execute('SELECT * FROM Actions')
for row in cursor:
print('row = %r' % (row,))
Из SQL Server в Excel:
import pyodbc
import pandas as pd
# cnxn = pyodbc.connect("Driver={SQL Server};SERVER=xxx;Database=xxx;UID=xxx;PWD=xxx")
cnxn = pyodbc.connect("Driver={SQL Server};SERVER=EXCEL-PC\SQLEXPRESS;Database=NORTHWND;")
data = pd.read_sql('SELECT * FROM Orders',cnxn)
data.to_excel('C:\\your_path_here\\foo.xlsx')
Поскольку вы выполняете это в записной книжке Databricks, когда вы используете Pandas для сохранения вашего файла в test.csv, он сохраняется в каталоге файлов узла драйвера Databricks. Способ проверить это - следующий фрагмент кода:
# Within Databricks, there are sample files ready to use within
# the /databricks-datasets folder
df = spark.read.csv("/databricks-datasets/samples/population-vs-price/data_geo.csv", inferSchema=True, header=True)
# Converting the Spark DataFrame to a Pandas DataFrame
import pandas as pd
pdDF = df.toPandas()
# Save the Pandas DataFrame to disk
pdDF.to_csv('test.csv')
Местоположение вашего test.csv
находится в папке /databricks/driver/
на узле кластерного драйвера вашего блока данных. Чтобы подтвердить это:
# Run the following shell command to see the results
%sh cat test.csv
# The output directory is shown here
%sh pwd
# Output
# /databricks/driver
Чтобы сохранить файл на локальном компьютере (например, на Mac), вы можете просмотреть Spark DataFrame с помощью команды display
в блокноте Databricks. Отсюда вы можете нажать на кнопку «Загрузить в CSV», которая выделена красным на изображении ниже.
Поскольку вы используете Databricks, вы, скорее всего, работаете на удаленной машине. Как уже упоминалось, сохранение того, как вы работаете, не будет работать (файл будет сохранен на машине, на которой находится главный узел вашего ноутбука). Попробуйте запустить:
import os
os.listdir(os.getcwd())
Это перечислит все файлы, которые находятся в каталоге, из которого работает ноутбук (по крайней мере, так работает ноутбук jupyter). Вы должны увидеть сохраненный файл здесь.
Тем не менее, я думаю, что Databricks предоставляет своим клиентам служебные функции для простой загрузки данных из облака. Кроме того, попробуйте использовать spark для подключения к БД - это может быть немного удобнее.
Я думаю, что эти две ссылки должны быть полезны для вас:
Подобный вопрос на форумах databricks
Похожие вопросы
Новые вопросы
python
Python - это мультипарадигмальный динамически типизированный многоцелевой язык программирования, разработанный для быстрого (для изучения, использования и понимания) и для обеспечения чистого и унифицированного синтаксиса. Обычно используются две похожие, но несовместимые версии Python, Python 2.7 и 3.x. Для специфичных для версии вопросов Python добавьте тег [python-2.7] или [python-3.x]. При использовании варианта или библиотеки Python (например, Jython, PyPy, Pandas, Numpy), пожалуйста, включите их в теги.