首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SparkR瓶颈在createDataFrame?

SparkR瓶颈在createDataFrame?
EN

Stack Overflow用户
提问于 2015-10-01 12:55:50
回答 1查看 1.8K关注 0票数 5

我对星火,SparkR和所有与HDFS相关的技术都很陌生.我最近安装了Spark1.5.0,并使用SparkR运行了一些简单的代码:

代码语言:javascript
复制
Sys.setenv(SPARK_HOME="/private/tmp/spark-1.5.0-bin-hadoop2.6")
.libPaths("/private/tmp/spark-1.5.0-bin-hadoop2.6/R/lib")
require('SparkR')
require('data.table')

sc <- sparkR.init(master="local")
sqlContext <- sparkRSQL.init(sc)
hiveContext <- sparkRHive.init(sc)

n = 1000
x = data.table(id = 1:n, val = rnorm(n))

Sys.time()
xs <- createDataFrame(sqlContext, x)
Sys.time()

代码立即执行。但是,当我将其更改为n = 1000000时,大约需要4分钟(两个Sys.time()调用之间的时间)。当我在端口4040的控制台中检查这些作业时,n = 1000的作业持续时间为0.2s,n = 1000000为0.3s。我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-13 20:56:58

你没做错什么特别的事。这只是不同因素综合作用的结果:

  1. 目前的createDataFrame (Spark1.5.1)的实现是缓慢的。这是火花-8277中描述的一个已知问题。
  2. 当前的实现不能很好地应用于data.table
  3. R基相对较慢。聪明人说,这是一个功能,而不是一个bug,但它仍然是值得考虑的。

在解决火花-8277之前,你没有什么可以做的,但是有两种选择可以尝试:

  • 使用普通的旧data.frame而不是data.table。使用航班数据集(227496行,14列): df <- read.csv("flights.csv") flights.csv df),times=3) ##单元:秒## expr min lq均值## createDataFrame(sqlContext,df) 96.41565 97.19515 99.08441 ## uq max neval ## 100.4188 102.8629 3 与data.table相比 dt <- data.table::fread("flights.csv") flights.csv dt),times=3) ##单元:秒## expr均值## createDataFrame(sqlContext,dt) 378.8534 379.4482 381.2061 380.043 ## uq max neval ## 382.3825 384.722 3
  • 写入磁盘,并使用spark-csv将数据直接加载到火花DataFrame,而不与R直接交互,听起来很疯狂: <- data.table::fread("flights.csv") write_and_read <- function() { write.csv( dt,tempfile(),row.names=FALSE) read.df(sqlContext,"flights.csv",source = "com.databricks.spark.csv",header = "true",inferSchema =“真”)} ##单位:秒## expr平均中位数## write_and_read() 2.924142 2.959085 2.983008 ## 2.994027 ## max neval ## 3.01244 3.030854 3

我不太确定是否真的有必要把R中可以处理的数据推到火花上,但不要多说。

编辑

这个问题应该由火花-11086在Spark1.6.0中解决。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32888142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档