【问题标题】:Saving ALS latent factors in Spark ML to S3 taking too long将 Spark ML 中的 ALS 潜在因素保存到 S3 花费的时间太长
【发布时间】:2017-05-20 11:16:18
【问题描述】:

我正在使用 Python 脚本使用 Spark ML 的 ALS 例程计算用户和项目潜在因素,如 here 所述。

计算潜在因素后,我尝试使用以下方法将这些因素保存到 S3:

model = als.fit(ratings)

# save items latent factors
model.itemFactors.rdd.saveAsTextFile(s3path_items)

# save users latent factors
model.userFactors.rdd.saveAsTextFile(s3path_users)

大约有 1.5 亿用户。 LFA 的计算速度很快(约 15 分钟),但将潜在因子写入 S3 需要将近 5 个小时。很明显,有些事情是不对的。你能帮忙找出问题吗?

我在使用 ALS 计算 LFA 时使用了 100 个用户块和 100 个项目块 - 以防这些信息可能相关。

使用 100 台 r3.8xlarge 机器完成这项工作。

【问题讨论】:

    标签: amazon-web-services apache-spark amazon-s3 pyspark


    【解决方案1】:

    这是 EMR、ASF Spark 官方版本还是其他?

    这里的一个问题是 S3 客户端倾向于将所有内容缓存到本地磁盘上,然后才开始上传。

    如果是 ASF 代码,您可以确保使用 Hadoop 2.7.x,使用 s3a:// 作为输出模式,并使用快速输出流选项,它可以在生成事物时进行增量写入。 2.7有点脆,2.7会更好。

    如果您在 EMR 上,那么您就只能靠自己了。

    另一个可能的原因是 S3 限制了客户端生成大量 HTTPS 请求到 S3 的特定分片,这意味着:S3 存储桶的特定位,前 5-8 个字符显然决定了分片。如果您可以在那里使用非常独特的名称,那么您可能会受到更少的限制。

    【讨论】:

      猜你喜欢
      • 2017-12-05
      • 2019-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      相关资源
      最近更新 更多