¿Cómo aplanar los datos de diferentes tipos de datos utilizando el paquete Sparklyr?

Introducció

l código @R se escribe utilizando el paquete Sparklyr para crear un esquema de base de datos. @ [Se proporciona código reproducible y base de datos]

Resultado existente

root
|-- contributors : string
|-- created_at : string
|-- entities (struct)
|     |-- hashtags (array) : [string]
|     |-- media (array)
|     |     |-- additional_media_info (struct)
|     |     |       |-- description : string
|     |     |       |-- embeddable : boolean
|     |     |       |-- monetizable : bollean
|     |     |-- diplay_url : string
|     |     |-- id : long
|     |     |-- id_str : string
|     |-- urls (array)     
|-- extended_entities (struct)
|-- retweeted_status (struct)
|-- user (struct)

Quiero aplanar esta estructura de la siguiente manera,

Resultado Esperad

root
|-- contributors : string
|-- created_at : string
|-- entities (struct)
|-- entities.hashtags (array) : [string]
|-- entities.media (array)
|-- entities.media.additional_media_info (struct)
|-- entities.media.additional_media_info.description : string
|-- entities.media.additional_media_info.embeddable : boolean
|-- entities.media.additional_media_info.monetizable : bollean
|-- entities.media.diplay_url : string
|-- entities.media.id : long
|-- entities.media.id_str : string
|-- entities.urls (array)     
|-- extended_entities (struct)
|-- retweeted_status (struct)
|-- user (struct)

Base de dato Navegar a: Datos-178 KB. Luego copie los elementos numerados a un archivo de texto llamado "ejemplo". Guarde en un directorio llamado "../example.json/" creado en su directorio de trabajo.

El código R está escrito para reproducir el ejemplo a continuación,

Código de salida

library(sparklyr)
library(dplyr)
library(devtools)
  devtools::install_github("mitre/sparklyr.nested")
# If Spark is not installed, then also need:
# spark_install(version = "2.2.0")
library(sparklyr.nested)
library(testthat)
library(jsonlite)

Sys.setenv(SPARK_HOME="/usr/lib/spark")    
conf <- spark_config()
conf

Esfuerzos realizados

Usó jsonlite. Pero tampoco puede leer archivos grandes y dentro de fragmentos. Tomó tiempo sin fin. Entonces, me volví hacia Sparklyr, ya que me sorprende y leo mil millones de registros en pocos segundos. He realizado más estudios para aplanar los registros hasta el nivel de anidación profunda (porque el aplanamiento se realiza en el paquete jsonlite usandoflatten() función). Pero, en Sparklyr, no hay tal característica disponible. Solo el aplanamiento de primer nivel podría ser posible en Sparklyr.

Quiero aplanar los datos de diferentes tipos de datos y quiero la salida en el archivo CSV.

sparklyr.shell.executor-memory' <- "20g" conf

Esfuerzos realizados

Usó jsonlite. Pero tampoco puede leer archivos grandes y dentro de fragmentos. Tomó tiempo sin fin. Entonces, me volví hacia Sparklyr, ya que me sorprende y leo mil millones de registros en pocos segundos. He realizado más estudios para aplanar los registros hasta el nivel de anidación profunda (porque el aplanamiento se realiza en el paquete jsonlite usandoflatten() función). Pero, en Sparklyr, no hay tal característica disponible. Solo el aplanamiento de primer nivel podría ser posible en Sparklyr.

Quiero aplanar los datos de diferentes tipos de datos y quiero la salida en el archivo CSV.

sparklyr.shell.driver-memory' <- "20g" conf$spark.executor.cores <- 16 conf$spark.executor.memory <- "20G" conf$spark.yarn.am.cores <- 16 conf$spark.yarn.am.memory <- "20G" conf$spark.executor.instances <- 8 conf$spark.dynamicAllocation.enabled <- "false" conf$maximizeResourceAllocation <- "true" conf$spark.default.parallelism <- 32 sc <- spark_connect(master = "local", config = conf, version = '2.2.0') # Connection sample_tbl <- spark_read_json(sc,name="example",path="example.json", header = TRUE, memory = FALSE, overwrite = TRUE) sdf_schema_viewer(sample_tbl) # to create db schema

Esfuerzos realizados

Usó jsonlite. Pero tampoco puede leer archivos grandes y dentro de fragmentos. Tomó tiempo sin fin. Entonces, me volví hacia Sparklyr, ya que me sorprende y leo mil millones de registros en pocos segundos. He realizado más estudios para aplanar los registros hasta el nivel de anidación profunda (porque el aplanamiento se realiza en el paquete jsonlite usandoflatten() función). Pero, en Sparklyr, no hay tal característica disponible. Solo el aplanamiento de primer nivel podría ser posible en Sparklyr.

Quiero aplanar los datos de diferentes tipos de datos y quiero la salida en el archivo CSV.

Respuestas a la pregunta(1)

Su respuesta a la pregunta