2017-01-03 101 views
0

目前我正在使用Spark和Pandas框架。如何以便捷的方式將熊貓數據框轉換爲可寫入s3的數據框。Spark將熊貓df轉換爲S3

我已經試過下面的選項,但我得到錯誤,因爲df是熊貓數據框,它沒有寫選項。

df.write() 
    .format("com.databricks.spark.csv") 
    .option("header", "true") 
    .save("123.csv"); 
+1

也許這樣的事情會令你有一個良好的開端:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_csv.html其寫入緩衝器將使用http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.put_object。請注意,您不必將其寫入硬盤驅動器即可寫入s3。實際上'to_csv()'和'put_object'似乎都支持非常高效的緩衝區。 –

回答

2

正如你在Spark中運行這樣,一種方法是將Pandas DataFrame轉換爲Spark DataFrame,然後將其保存到S3。

下面的代碼段創建pdf熊貓數據幀和把它轉換成df火花數據幀。

import numpy as np 
import pandas as pd 

# Create Pandas DataFrame 
d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']), 
    'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])} 
pdf = pd.DataFrame(d) 

# Convert Pandas DataFrame to Spark DataFrame 
df = spark.createDataFrame(pdf) 
df.printSchema() 

要驗證,我們也可以打印出下面輸出的Spark DataFrame的模式。現在

root 
|-- one: double (nullable = true) 
|-- two: double (nullable = true) 

,這是一個Spark數據框,你可以使用spark-csv包來保存該文件下面的例子。

# Save Spark DataFrame to S3 
df.write.format('com.databricks.spark.csv').options(header='true').save('123.csv')