簡體   English   中英

無法將數據框保存到本地Mac計算機

[英]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()

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雲服務器保存到我的本地計算機上。有人知道如何修復該文件嗎?

由於您正在使用Databricks,因此您很可能在遠程計算機上工作。 就像已經提到的那樣,保存您無法工作的方式(文件將保存到筆記本計算機主節點所在的計算機上)。 嘗試運行:

import os

os.listdir(os.getcwd())

這將列出運行筆記本計算機的目錄中的所有文件(至少這是jupyter筆記本計算機的工作方式)。 您應該在這里看到保存的文件。

但是,我認為Databricks向其客戶提供了實用程序功能,可以輕松地從雲中下載數據。 另外,嘗試使用spark連接到數據庫-可能會更方便一些。

我認為這兩個鏈接對您應該有用:

databricks論壇上的類似問題

Databricks文檔

因為您是在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”按鈕,該按鈕在下圖中以紅色突出顯示。 顯示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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM