【发布时间】:2016-11-16 17:01:58
【问题描述】:
我在 R Studio 服务器上使用 SparkR。创建 sqlContext 后,我在 sparkR 中处理了几张表,并留下了包含 220 万条记录的最终表,我想将其转换为 R data.frame,以便使用 R 函数开发回归模型。但是,由于内存问题,“as.data.frame(finaltable)”的代码即使在 2 小时后也不会执行。
library(SparkR)
sc <- sparkR.init(master="yarn-client", sparkEnvir = list(spark.yarn.keytab="/home/teja_kolli/teja_kolli.keytab" , spark.yarn.principal="teja_kolli@HADOOP.QA.AWS.CHOTEL.COM",spark.driver.memory="4g" ))
sqlContext <- sparkRSQL.init(sc)
customer_activity_bookings <- parquetFile(sqlContext, "s3a:/parquet/customer_activity_bookings/.parquet")
registerTempTable(customer_activity_bookings, "customer_activity_bookings")
我同样使用了大约 4 个表并进行进一步处理以得到表 T3 下面的表,它有大约 220 万条记录
t3 <- sql(sqlContext,
"select a.visitor_id,a.timestamp,a.sort_number,a.property_id,a.brand_name,a.distance_value,a.guest_recommends,a.guest_reviews,a.min_avg_nightly_before_tax,a.rating_value,
a.relevance,a.relevance_distance_index,a.relevance_rate_index,a.relevance_rating_index,a.hotel_selection_type,a.pid,c.p_key,c.sum_key
from t1 a left outer join t2 c on a.visitor_id = c.visitor_id and a.timestamp = c.timestamp where c.p_key=1 and sum_key=1")
**modeldata1<-as.data.frame(t3)**
上面的 as.data.frame 需要很长时间才能运行(抛出“内存不足 Java 堆空间错误”。在 sparkR.init 连接中,我达到了 (memory = "4g") 并且无法超越由于内存限制。)
有什么办法可以将这个包含 220 万条记录的最终表格带入 R,以便我可以使用 R 函数、库和命令?
【问题讨论】:
标签: r spark-dataframe sparkr rstudio-server