无法将数据框保存到本地 Mac Machine
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 格式导出到本地 Machine
df.to_csv('test.csv')
它没有给出任何错误,但是当我转到我的 Mac 机器的搜索图标以查找 "test.csv" 时,它不存在。我认为该操作无效,因此该文件从未从 Databricks 云服务器保存到我的本地计算机...有人知道如何修复它吗?
由于您使用的是 Databricks,因此您很可能在远程计算机上工作。就像已经提到的那样,保存你的方式是行不通的(文件将保存到你的笔记本主节点所在的机器上)。试试 运行:
import os
os.listdir(os.getcwd())
这将列出笔记本 运行 所在目录中的所有文件(至少 jupyter 笔记本是这样工作的)。您应该会在此处看到保存的文件。
不过,我认为 Databricks 为他们的客户提供了实用功能,可以轻松地从云端下载数据。另外,尝试使用 spark 连接到 db - 可能会更方便一些。
我觉得这两个链接应该对你有用:
因为你是 运行 Databricks notebook 中的这个,当你使用 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。从这里,您可以单击下图中以红色突出显示的 "Download to CSV" 按钮。
Select 来自 SQL 服务器:
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 服务器到 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 笔记本并在查询后尝试将我的数据框作为 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 格式导出到本地 Machine
df.to_csv('test.csv')
它没有给出任何错误,但是当我转到我的 Mac 机器的搜索图标以查找 "test.csv" 时,它不存在。我认为该操作无效,因此该文件从未从 Databricks 云服务器保存到我的本地计算机...有人知道如何修复它吗?
由于您使用的是 Databricks,因此您很可能在远程计算机上工作。就像已经提到的那样,保存你的方式是行不通的(文件将保存到你的笔记本主节点所在的机器上)。试试 运行:
import os
os.listdir(os.getcwd())
这将列出笔记本 运行 所在目录中的所有文件(至少 jupyter 笔记本是这样工作的)。您应该会在此处看到保存的文件。
不过,我认为 Databricks 为他们的客户提供了实用功能,可以轻松地从云端下载数据。另外,尝试使用 spark 连接到 db - 可能会更方便一些。
我觉得这两个链接应该对你有用:
因为你是 运行 Databricks notebook 中的这个,当你使用 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。从这里,您可以单击下图中以红色突出显示的 "Download to CSV" 按钮。
Select 来自 SQL 服务器:
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 服务器到 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')