[英]Can't Save Dataframe to Local Mac Machine
我正在使用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()
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] )
df.to_csv('test.csv')
它沒有給出任何錯誤,但是當我轉到Mac機器的搜索圖標以找到“ test.csv”時,它不存在。 我認為該操作無效,因此該文件從未從Databricks雲服務器保存到我的本地計算機上。有人知道如何修復該文件嗎?
由於您正在使用Databricks,因此您很可能在遠程計算機上工作。 就像已經提到的那樣,保存您無法工作的方式(文件將保存到筆記本計算機主節點所在的計算機上)。 嘗試運行:
import os
os.listdir(os.getcwd())
這將列出運行筆記本計算機的目錄中的所有文件(至少這是jupyter筆記本計算機的工作方式)。 您應該在這里看到保存的文件。
但是,我認為Databricks向其客戶提供了實用程序功能,可以輕松地從雲中下載數據。 另外,嘗試使用spark連接到數據庫-可能會更方便一些。
我認為這兩個鏈接對您應該有用:
因為您是在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群集驅動程序節點的/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),可以使用Databricks筆記本中的display
命令查看Spark DataFrame。 在這里,您可以單擊“下載到CSV”按鈕,該按鈕在下圖中以紅色突出顯示。
從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')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.