¿Cómo deshacer datos con SparkR?

UtilizandoSparkR ¿Cómo se pueden "explotar" las matrices anidadas? He intentado usarexplode al igual que:

 dat <- nested_spark_df %>% 
     mutate(a=explode(metadata)) %>%
     head()

pero aunque lo anterior no provoca una excepción, no promueve los campos anidados enmetadata al nivel superior Esencialmente estoy buscando un comportamiento similar al de HiveLATERAL VIEW explode() funcionalidad sin depender de unHiveContext.

Tenga en cuenta que en el fragmento de código estoy usando el NSE habilitado a través deSparkRext. Creo que el equivalente directoSparkR sería algo como... %>% mutate(a=explode(nested_spark_df$metadata)) ... O algo por el estilo.

EDITAR

He intentado usarLATERAL VIEW explode(...) en elSparkR::sql función. Parece funcionar muy bien con datos de Parquet y ORC. Sin embargo, cuando trabajé con datos Avro anidados, probé:

dat <- collect(sql(HiveContext,
                   paste0("SELECT a.id, ax.arrival_airport, x.arrival_runway ",
                          "FROM avrodb.flight a ",  
                             "LATERAL VIEW explode(a.metadata) a AS ax ",
                          "WHERE ax.arrival_airport='ATL'")))

Solo para obtener el siguiente error, aunque cuando se cambiaavrodb conparquetdb que contiene datos equivalentes, hace lo que espero.

Error in invokeJava(isStatic = TRUE, className, methodName, ...) :
  org.apache.spark.SparkException: Job aborted due to stage failure: Task 4 in stage 5.0 failed 4 times, most recent failure: Lost task 4.3 in stage 5.0 (TID 1345, dev-dn04.myorg.org): org.apache.avro.AvroTypeException: Found metadata, expecting union
    at org.apache.avro.io.ResolvingDecoder.doAction(ResolvingDecoder.java:292)
    at org.apache.avro.io.parsing.Parser.advance(Parser.java:88)
    at org.apache.avro.io.ResolvingDecoder.readIndex(ResolvingDecoder.java:267)
    at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:155)
    at org.apache.avro.generic.GenericDatumReader.readArray(GenericDatumReader.java:219)
    at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:153)
    at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:155)
    at org.apache.avro.generic.GenericDatumReader.readField(GenericDatumReader.java:193)
    at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:183)
    at org.apache.avr
Calls: <Anonymous> ... collect -> collect -> .local -> callJStatic -> invokeJava

Esto a pesar del hecho de que incluí el paquete DataBricks Avro al iniciar Spark. Lectura de los mismos datos con chispa usando unSQLContext (en vez deHiveContext) funciona bien, excepto que no he podido averiguar cómo usar elexplode() función. También he confirmado que esto no es un problema con los datos en sí al consultar con éxito los mismos archivos a través de Hive usando la misma instrucción HQL que intenté ejecutar conSparkR::sql(HiveContext, hql)

Respuestas a la pregunta(2)

Su respuesta a la pregunta