Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

203
Vistas
R lee el archivo ORC de S3

Alojaremos un clúster de EMR (con instancias puntuales) en AWS que se ejecutará sobre un depósito S3. Los datos se almacenarán en este depósito en formato ORC. Sin embargo, queremos usar R así como algún tipo de entorno de espacio aislado, leyendo los mismos datos.

Tengo el paquete aws.s3 (cloudyr) funcionando correctamente: puedo leer archivos csv sin problemas, pero parece que no me permite convertir los archivos orc en algo legible.

Las dos opciones que encontré en línea fueron - SparkR - conector de datos (vertica)

Dado que la instalación de dataconnector en una máquina con Windows era problemática, instalé SparkR y ahora puedo leer un archivo orc.file local (R local en mi máquina, archivo orc local en mi máquina). Sin embargo, si pruebo read.orc, por defecto normaliza mi ruta a una ruta local. Profundizando en el código fuente, ejecuté lo siguiente:

 sparkSession <- SparkR:::getSparkSession() options <- SparkR:::varargsToStrEnv() read <- SparkR:::callJMethod(sparkSession, "read") read <- SparkR:::callJMethod(read, "options", options) sdf <- SparkR:::handledCallJMethod(read, "orc", my_path)

Pero obtuve el siguiente error:

 Error: Error in orc : java.io.IOException: No FileSystem for scheme: https

¿Alguien podría ayudarme con este problema o indicarme una forma alternativa de cargar archivos orc desde S3?

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Respuesta editada: ahora puede leer directamente desde S3 en lugar de descargar y leer primero desde el sistema de archivos local

A pedido de mrjoseph: una posible solución a través de SparkR (que en primer lugar no quería hacer).

 # Set the System environment variable to where Spark is installed Sys.setenv(SPARK_HOME="pathToSpark") Sys.setenv('SPARKR_SUBMIT_ARGS'='"--packages" "org.apache.hadoop:hadoop-aws:2.7.1" "sparkr-shell"') # Set the library path to include path to SparkR .libPaths(c(file.path(Sys.getenv("SPARK_HOME"),"R","lib"), .libPaths())) # Set system environments to be able to load from S3 Sys.setenv("AWS_ACCESS_KEY_ID" = "myKeyID", "AWS_SECRET_ACCESS_KEY" = "myKey", "AWS_DEFAULT_REGION" = "myRegion") # load required packages library(aws.s3) library(SparkR) ## Create a spark context and a sql context sc<-sparkR.init(master = "local") sqlContext<-sparkRSQL.init(sc) # Set path to file path <- "s3n://bucketname/filename.orc" # Set hadoop configuration hConf = SparkR:::callJMethod(sc, "hadoopConfiguration") SparkR:::callJMethod(hConf, "set", "fs.s3n.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem") SparkR:::callJMethod(hConf, "set", "fs.s3n.awsAccessKeyId", "myAccesKey") SparkR:::callJMethod(hConf, "set", "fs.s3n.awsSecretAccessKey", "mySecrectKey") # Slight adaptation to read.orc function sparkSession <- SparkR:::getSparkSession() options <- SparkR:::varargsToStrEnv() # Not required: path <- normalizePath(path) read <- SparkR:::callJMethod(sparkSession, "read") read <- SparkR:::callJMethod(read, "options", options) sdf <- SparkR:::handledCallJMethod(read, "orc", path) temp <- SparkR:::dataFrame(sdf) # Read first lines head(temp)
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda