Blog
Lectura y escritura en Amazon S3 con Apache Spark
- 5 mayo, 2017
- Posted by: fagudo
- Category: Spark
Para poder acceder a los datos almacenados en Amazon S3 a través de Spark utilizaremos los métodos que nos proporciona su propia API de acceso a HDFS.
Para indicar las credenciales de acceso a Amazon S3 (en caso de que las necesitemos) tenemos dos formas de realizarlo:
- Especificando las credenciales en un fichero de configuración (por ejemplo en core-site.xml):
<property> <name>fs.s3a.access.key</name> <value>...</value> </property> <property> <name>fs.s3a.secret.key</name> <value>...</value> </property>
- En tiempo de ejecución (código):
sc.hadoopConfiguration.set("fs.s3a.access.key", "...") sc.hadoopConfiguration.set("fs.s3a.secret.key", "...")
A continuación un ejemplo de lectura y escritura sobre Amazon S3 (código en scala):
//Indicamos las credenciales
scala> sc.hadoopConfiguration.set(«fs.s3a.access.key», «…»)
scala> sc.hadoopConfiguration.set(«fs.s3a.secret.key», «…»)
//Acceso al fichero almacenado en Amazon S3 (con el API de acceso a HDFS de Spark)
scala> val peliculas = sc.textFile("s3a://s3-to-ec2/peliculas.txt") scala> val resultado = peliculas.flatMap(linea => linea.split(",")).map(cliente => (palabra, 1)).reduceByKey(_ + _) scala> resultado.saveAsTextFile("s3a://s3-to-ec2/salida")
Como podéis observar es muy sencillo acceder a cualquier otro sistema de ficheros desde Apache Spark.
Tal y como mostramos en los cursos y masters de Formación Hadoop, únicamente hay que indicar el «inicio» de la url del fichero (hdfs://, file://, etc..), estando por defecto configurado el sistema de ficheros de Hadoop (HDFS), y cualquier otra configuración que necesite como en nuestro caso las credenciales a Amazon S3.