使用sparklyr包访问hive?

ou6hu8tu  于 2021-06-26  发布在  Hive
关注(0)|答案(3)|浏览(311)
library(sparklyr)
library(dplyr)
home <- "/usr/hdp/current/spark-client"
sc <- spark_connect(master = "yarn-client", spark_home = home, version = "1.6.2")
readFromSpark <- spark_read_csv(sc, name="test", path ="hdfs://hostname/user/test.csv",header=TRUE)

我已经成功访问 hdfs 使用SparkyR。但是如何使用 sparklyr 因为我需要储存这个 df 进入Hive。

vaqhlq81

vaqhlq811#

您可以尝试spark\u write\u table:

spark_write_table(readFromSpark, 
    '<database_name>.readFromSpark', mode = 'overwrite')

如果还要创建架构,可以使用dbi包:

dbSendQuery(sc,"CREATE SCHEMA IF NOT EXISTS xyz")
    tbl_change_db(sc,"xyz")
rxztt3cl

rxztt3cl2#

另外,SparkyR没有直接创建数据库/表的功能。但你可以用 DBI 创建数据库/表。

library(DBI)
iris_preview <- dbExecute(sc, "CREATE EXTERNAL TABLE...")
fcwjkofz

fcwjkofz3#

我就是这样做到的:
设置:

cc <- RxSpark(nameNode = hdfs_host(myADL))
rxSetComputeContext(cc)

myXDFname <- 'something'
hivTbl <- RxHiveData(table = myXDFname)

sc <- spark_connect('yarn-client')

tbl_cache(sc, myXDFname)
mytbl <- tbl(sc, myXDFname)

现在用它做点什么

mytbl %>% head

mytbl %>% 
   filter(rlike(<txt col>, pattern)) %>%
   group_by(something) %>%
   tally() %>%
   collect() %>% #this is important
   ggplot(., aes(...)) %>%
   geom_triforce(...)

相关问题