Destaques
sparklyr
e amigos têm recebido algumas atualizações importantes nos últimos meses. Aqui estão alguns destaques:
spark_apply()
agora funciona no Databricks Join v2sparkxgb
está voltando à vidaO suporte para Spark 2.3 e versões anteriores foi encerrado
pysparklyr 0.1.4
spark_apply()
agora funciona no Databricks Join v2. O mais recente pysparklyr
lançamento usa o rpy2
Biblioteca Python como espinha dorsal da integração.
O Databricks Join v2 é baseado no Spark Join. No momento, ele suporta funções definidas pelo usuário (UDFs) do Python, mas não funções definidas pelo usuário do R. Usando rpy2
contorna essa limitação. Conforme mostrado no diagrama, sparklyr
envia o código R para o instalado localmente rpy2
que por sua vez o envia para o Spark. Então o rpy2
instalado no cluster remoto do Databricks executará o código R.

Figura 1: Código R through rpy2
Uma grande vantagem dessa abordagem é que rpy2
suporta Arrow. Na verdade, é a biblioteca Python recomendada para usar ao integrar Faísca, Flecha e R. Isso significa que a troca de dados entre os três ambientes será muito mais rápida!
Assim como em sua implementação authentic, a inferência de esquema funciona, e assim como na implementação authentic, tem um custo de desempenho. Mas diferentemente do authentic, esta implementação retornará uma especificação ‘columns’ que você pode usar na próxima vez que executar a chamada.
spark_apply(
tbl_mtcars,
nrow,group_by = "am"
)
#> To extend efficiency, use the next schema:
#> columns = "am double, x lengthy"
#> # Supply: desk<`sparklyr_tmp_table_b84460ea_b1d3_471b_9cef_b13f339819b6`> (2 x 2)
#> # Database: spark_connection
#> am x
#>
#> 1 0 19
#> 2 1 13
Um artigo completo sobre esse novo recurso está disponível aqui:
Execute R dentro do Databricks Join
faísca xgb
O sparkxgb
é uma extensão de sparklyr
. Permite a integração com
XGBoost. A versão atual do CRAN não suporta as versões mais recentes do XGBoost. Essa limitação recentemente levou a uma atualização completa do sparkxgb
. Aqui está um resumo das melhorias que estão atualmente em andamento. versão de desenvolvimento do pacote:
O
xgboost_classifier()
exgboost_regressor()
funções não passam mais valores de dois argumentos. Eles foram descontinuados pelo XGBoost e causam um erro se usados. Na função R, os argumentos permanecerão para compatibilidade com versões anteriores, mas gerarão um erro informativo se não forem deixadosNULL
:Atualiza a versão da JVM usada durante a sessão do Spark. Agora usa xgboost4j-spark versão 2.0.3em vez de 0.8.1. Isso nos dá acesso ao código Spark mais recente do XGboost.
Atualiza o código que usou funções obsoletas de dependências R upstream. Ele também para de usar um pacote não mantido como uma dependência (
forge
). Isso eliminou todos os avisos que ocorriam ao ajustar um modelo.Grandes melhorias nos testes de pacotes. Os testes unitários foram atualizados e expandidos, a maneira
sparkxgb
inicia e para automaticamente a sessão Spark para teste foi modernizada, e os testes de integração contínua foram restaurados. Isso garantirá a saúde do pacote daqui para frente.
::install_github("rstudio/sparkxgb")
remotes
library(sparkxgb)
library(sparklyr)
<- spark_connect(grasp = "native")
sc <- copy_to(sc, iris)
iris_tbl
<- xgboost_classifier(
xgb_model
iris_tbl,~ .,
Species num_class = 3,
num_round = 50,
max_depth = 4
)
%>%
xgb_model ml_predict(iris_tbl) %>%
choose(Species, predicted_label, starts_with("probability_")) %>%
::glimpse()
dplyr#> Rows: ??
#> Columns: 5
#> Database: spark_connection
#> $ Species "setosa", "setosa", "setosa", "setosa", "setosa…
#> $ predicted_label "setosa", "setosa", "setosa", "setosa", "setosa…
#> $ probability_setosa 0.9971547, 0.9948581, 0.9968392, 0.9968392, 0.9…
#> $ probability_versicolor 0.002097376, 0.003301427, 0.002284616, 0.002284…
#> $ probability_virginica 0.0007479066, 0.0018403779, 0.0008762418, 0.000…
Sparklyr 1.8.5
A nova versão do sparklyr
não tem melhorias voltadas para o usuário. Mas internamente, ele cruzou um marco importante. O suporte para Spark versão 2.3 e abaixo foi efetivamente encerrado. O código Scala necessário para isso não faz mais parte do pacote. De acordo com a política de controle de versão do Spark, encontrado aquiO Spark 2.3 chegou ao fim de sua vida útil em 2018.
Isso faz parte de um esforço maior e contínuo para tornar a imensa base de código de
sparklyr
um pouco mais fácil de manter e, portanto, reduzir o risco de falhas. Como parte do mesmo esforço, o número de pacotes upstream que sparklyr
depende de ter sido reduzido. Isso tem acontecido em várias versões do CRAN e, nesta versão mais recente, tibble
e rappdirs
não são mais importados por sparklyr
.
Reuso
Texto e figuras são licenciados sob Artistic Commons Attribution CC BY 4.0. As figuras que foram reutilizadas de outras fontes não se enquadram nesta licença e podem ser reconhecidas por uma nota na legenda: “Figura de …”.
Citação
Para atribuição, cite este trabalho como
Ruiz (2024, April 22). Posit AI Weblog: Information from the sparkly-verse. Retrieved from https://blogs.rstudio.com/tensorflow/posts/2024-04-22-sparklyr-updates/
Citação BibTeX
@misc{sparklyr-updates-q1-2024, writer = {Ruiz, Edgar}, title = {Posit AI Weblog: Information from the sparkly-verse}, url = {https://blogs.rstudio.com/tensorflow/posts/2024-04-22-sparklyr-updates/}, yr = {2024} }