Eis a glória que é Sparklyr 1.2! Neste lançamento, as seguintes novas gostosas surgiram nos holofotes:
- UM
registerDoSpark
método para criar um foreach Again -end paralelo alimentado pela Spark que permite que centenas de pacotes R existentes sejam executados em Spark. - Suporte para Databricks Joinpermitindo
sparklyr
conectar -se a clusters de banco de dados remotos. - Suporte melhorado para Spark estruturas ao coletar e consultar seus atributos aninhados com
dplyr
.
Vários problemas entre-op observados com sparklyr
e a visualização do Spark 3.0 também foi abordada recentemente, na esperança de que, quando o Spark 3.0 nos agradece oficialmente com sua presença, sparklyr
estará totalmente pronto para trabalhar com ele. Mais notavelmente, características -chave como spark_submit
Assim, sdf_bind_rows
E as conexões independentes estão finalmente trabalhando com o Spark 3.0 Preview.
Para instalar sparklyr
1.2 de Cran Run,
A lista completa de alterações está disponível no Sparklyr NOTÍCIAS arquivo.
Foreach
O foreach
o pacote fornece o %dopar%
Operador para iterar sobre elementos em uma coleção em paralelo. Usando sparklyr
1.2, agora você pode registrar o Spark como um again -end usando registerDoSpark()
e depois iterar facilmente sobre R Objetos usando Spark:
(1) 1.000000 1.414214 1.732051
Como muitos pacotes R são baseados em foreach
Para realizar computação paralela, agora podemos usar todos esses ótimos pacotes em Spark também!
Por exemplo, podemos usar Parsnip e o Tune pacote com dados de mlbench Para executar o ajuste do hyperparâmetro em faísca com facilidade:
library(tune)
library(parsnip)
library(mlbench)
information(Ionosphere)
svm_rbf(price = tune(), rbf_sigma = tune()) %>%
set_mode("classification") %>%
set_engine("kernlab") %>%
tune_grid(Class ~ .,
resamples = rsample::bootstraps(dplyr::choose(Ionosphere, -V2), instances = 30),
management = control_grid(verbose = FALSE))
# Bootstrap sampling
# A tibble: 30 x 4
splits id .metrics .notes
*
1 Bootstrap01
2 Bootstrap02
3 Bootstrap03
4 Bootstrap04
5 Bootstrap05
6 Bootstrap06
7 Bootstrap07
8 Bootstrap08
9 Bootstrap09
10 Bootstrap10
# … with 20 extra rows
A conexão Spark já estava registrada, então o código foi executado em Spark sem alterações adicionais. Podemos verificar se este foi o caso navegando para a interface da Internet Spark:
Databricks Join
Databricks Join permite que você conecte seu IDE favorito (como Rstudio!) para uma faísca Databricks conjunto.
Você primeiro terá que instalar o databricks-connect
pacote conforme descrito em nosso Readme e inicie um cluster de banco de dados, mas uma vez que estiver pronto, conectar -se ao cluster remoto é tão fácil quanto executar:
sc <- spark_connect(
methodology = "databricks",
spark_home = system2("databricks-connect", "get-spark-home", stdout = TRUE))
É isso, agora você está remotamente conectado a um cluster Databricks da sua sessão R native.
Estruturas
Se você usou anteriormente accumulate
Para desserializar os quadros de dados de faísca estruturalmente complexos em seus equivalentes em R, você provavelmente notou que as colunas Spark SQL Struct foram mapeadas apenas em cordas JSON em r, que não period perfect. Você também pode ter encontrado um muito temido java.lang.IllegalArgumentException: Invalid kind checklist
erro ao usar dplyr
Para consultar atributos aninhados de qualquer coluna STREST de um quadro de dados de faísca no sparklyr.
Infelizmente, muitas vezes, em casos de uso de faísca do mundo actual, os dados que descrevem entidades que compreendem sub-entrada (por exemplo, um catálogo de produtos de todos os componentes de {hardware} de alguns computadores) precisam ser desnormalizados / moldados de maneira orientada a objetos na forma de Spark SQL Structs para permitir consultas de leitura eficientes. Quando a Sparklyr tinha as limitações mencionadas acima, os usuários geralmente tinham que inventar suas próprias soluções alternativas ao consultar colunas de Spark Struct, o que explicava por que havia uma demanda standard em massa por Sparlyr para ter melhor suporte para tais casos de uso.
A boa notícia é com sparklyr
1.2, essas limitações não existem mais mais ao trabalhar em execução com o Spark 2.4 ou superior.
Como exemplo concreto, considere o seguinte catálogo de computadores:
library(dplyr)
computer systems <- tibble::tibble(
id = seq(1, 2),
attributes = checklist(
checklist(
processor = checklist(freq = 2.4, num_cores = 256),
value = 100
),
checklist(
processor = checklist(freq = 1.6, num_cores = 512),
value = 133
)
)
)
computer systems <- copy_to(sc, computer systems, overwrite = TRUE)
Um típico dplyr
use case envolvendo computer systems
seria o seguinte:
Como mencionado anteriormente, antes sparklyr
1.2, essa consulta falharia com Error: java.lang.IllegalArgumentException: Invalid kind checklist
.
Enquanto que com sparklyr
1.2, o resultado esperado é retornado na seguinte forma:
# A tibble: 1 x 2
id attributes
1 1
onde high_freq_computers$attributes
é o que esperaríamos:
((1))
((1))$value
(1) 100
((1))$processor
((1))$processor$freq
(1) 2.4
((1))$processor$num_cores
(1) 256
E mais!
Por último, mas não menos importante, ouvimos falar de vários pontos de dor sparklyr
Os usuários se depararam e também abordaram muitos deles neste lançamento. Por exemplo:
- O tipo de information em r agora está corretamente serializado no tipo de information spark sql por
copy_to
Agora realmente imprime 20 linhas como esperado em vez de 10%>% print(n = 20) spark_connect(grasp = "native")
emitirá uma mensagem de erro mais informativa se estiver falhando porque a interface de loopback não está em alta
… Para citar alguns. Queremos agradecer à comunidade de código aberto por seu suggestions contínuo sobre sparklyr
e estão ansiosos para incorporar mais desse suggestions para fazer sparklyr
Ainda melhor no futuro.
Finalmente, em ordem cronológica, desejamos agradecer aos seguintes indivíduos por contribuir com sparklyr
1.2: Zero323Assim, Andy ZhangAssim, Yitao LiAssim,
Javier LuraschiAssim, Hossein FalakiAssim, Lu WangAssim, Samuel Macedo e Jozef Hajnala. Ótimo trabalho a todos!
Se você precisar acompanhar sparklyr
por favor, visite Sparklyr.aiAssim, Spark.rstudio.comou alguns dos posts de lançamento anterior: Sparklyr 1.1 e Sparklyr 1.0.
Obrigado por ler este publish.