tutorial spark parallelize example espaƱol python apache-spark pyspark sequencefile

python - parallelize - Guardar RDD como archivo de secuencia en pyspark



pyspark tutorial (2)

Los archivos de secuencia se utilizan para almacenar pares clave-valor, por lo que no puede simplemente almacenar RDD[String] . Teniendo en cuenta sus datos, supongo que está buscando algo como esto:

rdd = sc.parallelize([ "2,Fitness", "3,Footwear", "4,Apparel" ]) rdd.map(lambda x: tuple(x.split(",", 1))).saveAsSequenceFile("testSeq")

Si quieres mantener cadenas enteras solo usa las teclas None :

rdd.map(lambda x: (None, x)).saveAsSequenceFile("testSeqNone")

Puedo ejecutar esta secuencia de comandos para guardar el archivo en formato de texto, pero cuando intento ejecutar saveAsSequenceFile, se está produciendo un error. Si alguien tiene una idea acerca de cómo guardar el RDD como archivo de secuencia, por favor, hágamelo saber el proceso. Intenté buscar una solución en "Learning Spark" y en la documentación oficial de Spark.

Esto funciona con éxito

dataRDD = sc.textFile("/user/cloudera/sqoop_import/departments") dataRDD.saveAsTextFile("/user/cloudera/pyspark/departments")

Esto falla

dataRDD = sc.textFile("/user/cloudera/sqoop_import/departments") dataRDD.saveAsSequenceFile("/user/cloudera/pyspark/departmentsSeq")

Error: Se produjo un error al llamar a z: org.apache.spark.api.python.PythonRDD.saveAsSequenceFile. : org.apache.spark.SparkException: el elemento RDD de tipo java.lang.String no se puede usar

Aquí están los datos:

2,Fitness 3,Footwear 4,Apparel 5,Golf 6,Outdoors 7,Fan Shop 8,TESTING 8000,TESTING


Para escribir en el archivo Sequence necesita los datos en formato de Hadoop API.

Cadena como texto
Int como IntWritable

En Python:

data = [(1, ""),(1, "a"),(2, "bcdf")] sc.parallelize(data).saveAsNewAPIHadoopFile(path,"org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat","org.apache.hadoop.io.IntWritable","org.apache.hadoop.io.Text")