Como posso escrever um arquivo parquet usando Spark (pyspark)?
Sou muito novo no Spark e tenho tentado converter um Dataframe para um arquivo parquet no Spark, mas ainda não tive sucesso. A documentação diz que posso usar escrever.parquet função para criar o ficheiro. No entanto, quando executar o programa, ele mostra-me: AttributeError: o objecto ' RDD 'não tem atributo 'write''
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")
Sabes como fazer isto funcionar?
A versão de faísca que estou a usar é a Spark 2.0.1 construída para a Hadoop. 2.7.3.
27
2 answers
O erro deveu-se ao facto de o método textFile
de SparkContext
ter devolvido um RDD
e o que eu precisava era de um DataFrame
.
DataFrameReader
para ler o arquivo CSV corretamente antes de convertê-lo para um arquivo parquet.
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")
53
Author: ebertbm, 2017-02-08 10:40:50
Você também pode escrever arquivos Parquet de Spark com koalas. Esta Biblioteca é óptima para pessoas que preferem a sintaxe Pandas. Coalas é PySpark debaixo do capô.
Aqui está o código do Coala:import databricks.koalas as ks
df = ks.read_csv('/temp/proto_temp.csv')
df.to_parquet('output/proto.parquet')
Leiaeste post Se quiser mais detalhes.
2
Author: Powers, 2020-10-07 13:49:31