Soy bastante nuevo en Spark y he estado tratando de convertir un Dataframe en un archivo de parquet en Spark, pero aún no he tenido éxito. La documentación dice que puedo usar la función write.parquet para crear el archivo. Sin embargo, cuando ejecuto el script me muestra: AttributeError: el objeto 'RDD' no tiene 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 cómo hacer que esto funcione?
La versión de chispa que estoy usando es Spark 2.0.1 creada para Hadoop 2.7.3.
El error se debió al hecho de que el método textFile de SparkContext devolvió un RDD y lo que necesitaba era un DataFrame .
SparkSession tiene un SQLContext bajo el capó. Así que necesitaba usar DataFrameReader para leer el archivo CSV correctamente antes de convertirlo en un archivo de 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")También puede escribir archivos de Parquet desde Spark con koalas . Esta biblioteca es excelente para las personas que prefieren la sintaxis de Pandas. Koalas es PySpark bajo el capó.
Aquí está el código de Koala:
import databricks.koalas as ks df = ks.read_csv('/temp/proto_temp.csv') df.to_parquet('output/proto.parquet')