小编ger*_*ium的帖子

Spark:数据帧检查点与显式写入磁盘的效率

检查点版本:

val savePath = "/some/path"
spark.sparkContext.setCheckpointDir(savePath)
df.checkpoint()
Run Code Online (Sandbox Code Playgroud)

写入磁盘版本:

df.write.parquet(savePath)
val df = spark.read.parquet(savePath)
Run Code Online (Sandbox Code Playgroud)

我认为两者都以同样的方式打破了血统.

在我的实验中,检查点在磁盘上比镶木地板大约30(689GB对24GB).在运行时间方面,检查点需要1.5倍(10.5分钟对7.5分钟).

考虑到这一切,使用检查点而不是保存到文件有什么意义?我错过了什么吗?

scala apache-spark apache-spark-sql

12
推荐指数
1
解决办法
2558
查看次数

在Spark ML中创建自定义交叉验证

我是Spark和PySpark Data Frames和ML的新手.如何为ML库创建自定义交叉验证.我想例如改变训练折叠的形成方式,例如分层分裂.

这是我目前的代码

numFolds = 10
predictions = []

lr = LogisticRegression()\
     .setFeaturesCol("features")\
     .setLabelCol('label')

# Grid search on LR model
lrparamGrid = ParamGridBuilder()\
     .addGrid(lr.regParam, [0.01, 0.1, 0.5, 1.0, 2.0])\
     .addGrid(lr.elasticNetParam, [0.0, 0.1, 0.5, 0.8, 1.0])\
     .addGrid(lr.maxIter, [5, 10, 20])\
     .build()

pipelineModel = Pipeline(stages=[lr])
evaluator = BinaryClassificationEvaluator()

cv = CrossValidator()\
     .setEstimator(pipelineModel)\
     .setEvaluator(evaluator)\
     .setEstimatorParamMaps(lrparamGrid).setNumFolds(5)

# My own Cross-Validation with stratified splits
for i in range(numFolds):
     # Use Stratified indexOfStratifiedSplits
     trainingData = df[df.ID.isin(indexOfStratifiedSplits[i][0])]
     testingData = df[df.ID.isin(indexOfStratifiedSplits[i][1])]

# Training and Grid …
Run Code Online (Sandbox Code Playgroud)

python scala apache-spark apache-spark-mllib

7
推荐指数
1
解决办法
1634
查看次数

Spark:我已失去参考的unpersist RDD

如何在MLlib模型中生成的RDD,我没有参考?

我知道在pyspark你可以解决所有数据帧的问题sqlContext.clearCache(),是否有类似的内容,但scala API中的RDD?此外,有没有一种方法可以解决一些RDD,而不必全部解开?

scala apache-spark

6
推荐指数
1
解决办法
2112
查看次数