2017-02-03 2 views
6

Я довольно новичок в Spark, и я пытаюсь преобразовать Dataframe в файл паркета в Spark, но еще не успел. documentation говорит, что я могу использовать функцию write.parquet для создания файла. Однако, когда я бег сценария он показывает мне: AttributeError: объект «РД» не имеет атрибута «писать»Как написать паркетный файл с помощью Spark (pyspark)?

from pyspark import SparkContext 
sc = SparkContext("local", "Protob Conversion to Parquet ") 

# spark is an existing SparkSession 
df = sc.textFile("/temp/proto_temp.csv") 

# Displays the content of the DataFrame to stdout 
df.write.parquet("/output/proto.parquet") 

Вы знаете, как сделать эту работу?

Искровная версия, которую я использую, - это Spark 2.0.1 для Hadoop 2.7.3.

+1

'sc.textFile()' возвращает 'RDD'. – mrsrinivas

+0

Да, я просто это понял. Я просто перешел на SparkSession вместо SparkContext – ebertbm

ответ

7

Ошибка произошла из-за того, что метод textFile от SparkContext возвратил RDD, и мне нужен был DataFrame.

SparkSession имеет SQLContext под капотом. Поэтому мне нужно было использовать DataFrameReader для правильного чтения файла CSV, прежде чем преобразовать его в файл паркета.

spark = SparkSession \ 
    .builder \ 
    .appName("Protob Conversion to Parquet") \ 
    .config("spark.some.config.option", "some-value") \ 
    .getOrCreate() 

# read csv 
df = spark.read.csv("/temp/proto_temp.csv") 

# Displays the content of the DataFrame to stdout 
df.show() 

df.write.parquet("output/proto.parquet") 
+2

Даже если ваш код верен, ваше объяснение не является. SparkContext не конвертирует CSV-файл в RDD. Метод 'textFile' из SparkContext возвращает RDD, и вам нужен' DataFrame', таким образом, SQLContext или HiveContext, который также инкапсулирован в SparkSession в ** spark 2 + **. Не хотите ли вы исправить эту информацию и принять ответ закрыть вопрос? – eliasah

+1

Спасибо @eliasah за отзыв! – ebertbm

+0

Не могли бы вы рассказать о своем вопросе и принять то, что нужно принять, чтобы мы могли закрыть некоторые вопросы? – eliasah

Смежные вопросы