Voilà la popularité qui est Sparklyr 1.2! À cause cette forme, les originaux points chauds suivants ont émergé en deçà les projecteurs :

  • UN registerDoSpark comme stimuler un backend ressemblance foreach ravitaillé par Spark qui permet à des centaines de packages R existants de s’conduire à cause Spark.
  • Adaptation en abordage de Databricks Connect, permettant sparklyr comme se allumer à des clusters Databricks distants.
  • Adaptation en abordage améliorée des structures Spark tandis de la cueillette et de l’discussion de à eux attributs imbriqués puis dplyr.

Un intelligible presse de problèmes inter-op observés puis sparklyr et l’résumé de Spark 3.0 ont autant été abordés quelquefois, à cause l’prévision qu’au particularité où Spark 3.0 nous-même honorera majestueusement de sa assistance, sparklyr sera généralité à événement influence à gonfler puis lui. Avec spécialement, des fonctionnalités trousseaux semblables que spark_submit, sdf_bind_rowset les connexions autonomes fonctionnent finalement puis l’résumé de Spark 3.0.

À camper sparklyr 1.2 de la coude CRAN,

La note chargée des changements est vide à cause le meuble sparklyr NEWS.

Pile quelque

Le foreach le balluchon prête le %dopar% Producteur comme mesurer les éléments d’une rassemblement en ressemblance. En utilisant sparklyr 1.2, toi-même pouvez retenant consigner Spark en beaucoup que backend en utilisant registerDoSpark() avec parcourez simplement les objets R à l’défenseur de Spark :

(1) 1.000000 1.414214 1.732051

Rencontrant donné que de multiple packages R sont basés sur foreach comme procéder des gravelle parallèles, nous-même pouvons désormais autant exciper entiers ces géniaux packages à cause Spark !

Par principe, nous-même pouvons exciper parsnip et le produit tune puis les hasard de mlbench comme procéder simplement le ajustement des hyperparamètres à cause Spark :

library(tune)
library(parsnip)
library(mlbench)

data(Ionosphere)
svm_rbf(cost = tune(), rbf_sigma = tune()) %>%
  set_mode("nomenclature") %>%
  set_engine("kernlab") %>%
  tune_grid(Class ~ .,
    resamples = rsample::bootstraps(dplyr::select(Ionosphere, -V2), times = 30),
    control = control_grid(verbose = FALSE))
# Bootstrap sampling
# A tibble: 30 x 4
   splits            id          .metrics          .états
 * <list>            <chr>       <list>            <list>
 1 <split (351/124)> Bootstrap01 <tibble (10 × 5)> <tibble (0 × 1)>
 2 <split (351/126)> Bootstrap02 <tibble (10 × 5)> <tibble (0 × 1)>
 3 <split (351/125)> Bootstrap03 <tibble (10 × 5)> <tibble (0 × 1)>
 4 <split (351/135)> Bootstrap04 <tibble (10 × 5)> <tibble (0 × 1)>
 5 <split (351/127)> Bootstrap05 <tibble (10 × 5)> <tibble (0 × 1)>
 6 <split (351/131)> Bootstrap06 <tibble (10 × 5)> <tibble (0 × 1)>
 7 <split (351/141)> Bootstrap07 <tibble (10 × 5)> <tibble (0 × 1)>
 8 <split (351/123)> Bootstrap08 <tibble (10 × 5)> <tibble (0 × 1)>
 9 <split (351/118)> Bootstrap09 <tibble (10 × 5)> <tibble (0 × 1)>
10 <split (351/136)> Bootstrap10 <tibble (10 × 5)> <tibble (0 × 1)>
# … with 20 more rows

La ressemblance Spark accomplissait déjà enregistrée, ainsi le législation s’est achevé à cause Spark hormis aucune rectification complémentaire. Les gens pouvons enregistrer que c’accomplissait le cas en accédant à l’liaison Web de Spark :

Interfacer les briques de hasard

Databricks Connect toi-même permet de allumer votre IDE favori (comment RStudio !) à un cluster Spark Databricks.

Vous-même devrez d’entour camper le databricks-connect produit comment décrit à cause à nous README et démarrez un cluster Databricks, seulement une coup que c’est influence, la ressemblance au cluster digne est également rationnel que l’façon :

sc <- spark_connect(
  method = "databricks",
  spark_home = system2("databricks-connect", "get-spark-home", stdout = TRUE))

C’est quasiment généralité, toi-même êtes retenant connecté à distinction à un cluster Databricks depuis votre débat R locale.

Tâches

Si toi-même avez déjà pratiqué collect comme désérialiser des dataframes Spark structurellement complexes en à eux identiques à cause R, toi-même avez plausiblement remarqué que les colonnes de construction Spark SQL n’réalisaient mappées que à cause des chaînes JSON à cause R, ce qui n’accomplissait pas précédent. Vous-même pourriez également possession rencontré un excessivement redouté danse.lang.IllegalArgumentException: Invalid principe list bévue tandis de l’emploi dplyr comme demander les attributs imbriqués de n’importe laquelle contrefort struct d’une dataframe Spark à cause sparklyr.

Purement, généralement à cause les cas d’emploi réels de Spark, les hasard décrivant des personnes aiguisé des sous-entités (par principe, un détail de produits de entiers les composants matériels de quelques-uns ordinateurs) doivent nature dénormalisées / façonnées de moeurs orientée accessoire en deçà la règle de Structures Spark SQL comme agréer des requêtes de cursus efficaces. Tandis sparklyr avait les limitations mentionnées plus haut, les utilisateurs devaient généralement concevoir à eux propres solutions de déviation tandis de l’discussion des colonnes de construction Spark, ce qui expliquait pour il y avait une épreuve vulgaire massive comme que sparklyr ait un important soutien comme de équivalents cas d’emploi.

La gentille roman est puis sparklyr 1.2, ces limitations n’existent alors comme toi-même travaillez puis Spark 2.4 ou chef.

A armoiries d’principe outillage, considérons le détail d’ordinateurs traquant :

library(dplyr)

computers <- tibble::tibble(
  id = seq(1, 2),
  attributes = list(
    list(
      processor = list(freq = 2.4, num_cores = 256),
      price = 100
   ),
   list(
     processor = list(freq = 1.6, num_cores = 512),
     price = 133
   )
  )
)

computers <- copy_to(sc, computers, overwrite = TRUE)

Un copie dplyr cas d’emploi impliquant computers serait la suivante :

Également cité antérieurement, ci-devant sparklyr 1.2, une similaire insistance échouerait puis Error: danse.lang.IllegalArgumentException: Invalid principe list.

Pendant qu’puis sparklyr 1.2, le obtention convenu est répit en deçà la règle suivante :

# A tibble: 1 x 2
     id attributes
  <int> <list>
1     1 <named list (2)>

high_freq_computers$attributes est ce à auxquelles on s’attendrait :

((1))
((1))$price
(1) 100

((1))$processor
((1))$processor$freq
(1) 2.4

((1))$processor$num_cores
(1) 256

Et alors!

Bref et principalement, nous-même avons accordé cancaner d’un intelligible presse de points atroce sparklyr les utilisateurs ont rencontrés et ont autant abordé bon presse d’dans eux à cause cette forme. Par principe:

  • Le principe de temps à cause R est désormais loyalement sérialisé à cause le principe de temps Spark SQL par copy_to
  • <spark dataframe> %>% print(n = 20) imprime retenant 20 plans comment attendu au coin de 10
  • spark_connect(master = "logement") émettra un discours d’bévue alors instructif s’il échoue étant donné que l’liaison de contre-réaction n’est pas en affermi

… comme n’en préférer que les gens. Les gens tenons à écarter la corporation open origine comme à eux annales continus sur sparklyret nous-même sommeils impatients d’enrôler encore de ces annales comme boursicoteur sparklyr plus davantage à l’prochain.

Bref, par fréquence chronologique, nous-même tenons à écarter les âmes suivantes comme à eux taxe à sparklyr 1.2 : zero323, Andy Zhang, Yitao Li, Javier Luraschi, Hossein Falaki, Lu Wang, Samuel Macedo et Jozef Hajnala. Prééminent couches à entiers !

Si toi-même avez désir de toi-même ressaisir sparklyrveuillez examiner sparklyr.ai, spark.rstudio.com ou quelques-uns des éditoriaux de la forme précédente : sparklyr 1.1 et sparklyr 1.0.

Miséricorde de consumer cet étude.

By nsmaat