sparklyr可以连接远程数据库(例如:mysql)?
可以通过sparklyr连接远程数据库吗?
- 已编辑
CMCai0104 可以 通过 jdbc 的机制就可以连接了
config <- spark_config()
config$`sparklyr.shell.driver-class-path` <-
"~/Downloads/mysql-connector-java-5.1.41/mysql-connector-java-5.1.41-bin.jar"
sc <- spark_connect(master = "local",
version = "2.1.0",
config = config)
spark_read_jdbc(sc, "person_jdbc", options = list(
url = "jdbc:mysql://localhost:3306/sparklyr",
user = "root",
password = "<password>",
dbtable = "person"))
HarryZhu-7harryprince thank you!昨晚试了下,可以。
还有几个疑问,麻烦帮忙解答下:
1、 "person_jdbc" 是指什么?
2、感觉连接速度很慢,速度远不如直接用RMySQL包进行dbConnect快!不知道是我网络的问题还是就是这样的?
而且一次只能连接一个table,如果多个表格进行关联不是更惨!
3、现在spark主要的用途是什么?感觉只能进行一些简单的数据预处理和机器学习。如果进行复杂的特征计算(多个表之间互相调用进行复杂计算)是不是还不太合适。
谢谢!!!
- 已编辑
CMCai0104 Spark 初始化的时候MySQL 连接慢是正常的,因为它是分布式的,固定成本比较高,边际成本比较低。如果你处理大批量的数据的时候 才会体现出来它的优势,(而且还要适当调优它的partition、memory等参数)。
- 已编辑
Spark 的优势在于 ETL 或者说特征工程的时候代码的复用性是非常好的,相对于Hive基于内存的机制可以实现很多索引。比如 geospark https://github.com/harryprince/geospark.
通过 Spark pipeline的 bundle 机制,部署ETL 很方便
HarryZhu-7harryprince 好的,谢谢。
大概了解了,这方面不太懂。
CMCai0104 可以把这个网页看看 https://spark.rstudio.com/