【问题标题】:Conversion to R data.frame from SparkR dataframe is never completed for 2 million records200 万条记录从未完成从 SparkR 数据帧到 R 数据帧的转换
【发布时间】: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


    【解决方案1】:

    将 sparkR 数据帧转换为本地 R 数据帧不是一个好主意,因为您将所有分布式 dato 移动到一个点,这会导致大量网络流量并错过分布式数据的优势,也许您应该研究一下更多关于 sparkR 包的信息可能有一个你想要计算的命令

    https://spark.apache.org/docs/latest/api/R/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      • 2022-06-11
      • 2020-06-17
      • 2022-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多