2017-01-03 4 views
0

В настоящее время я использую Spark вместе с каркасом Pandas. Как я могу конвертировать Pandas Dataframe удобным способом, который можно записать на s3.Преобразование Spark Pandas df в S3

Я пробовал вариант ниже, но я получаю сообщение об ошибке, поскольку df - это dataframe Pandas, и у него нет опции записи.

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

Как вы работаете это искра, один подход должен был бы преобразовать панды DataFrame в Спарк DataFrame, а затем сохранить это в S3.

фрагмент кода ниже создает pdfпанды DataFrame и преобразует его в df Спарк DataFrame.

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() 

Для проверки, мы можем также распечатать схему для искрового DataFrame с ниже выхода.

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

Теперь, когда это искра DataFrame, вы можете использовать spark-csv пакет, чтобы сохранить файл с приведенном ниже примере.

# Save Spark DataFrame to S3 
df.write.format('com.databricks.spark.csv').options(header='true').save('123.csv') 
Смежные вопросы