检查点版本:
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分钟).
考虑到这一切,使用检查点而不是保存到文件有什么意义?我错过了什么吗?
我是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) 如何在MLlib模型中生成的RDD,我没有参考?
我知道在pyspark你可以解决所有数据帧的问题sqlContext.clearCache(),是否有类似的内容,但scala API中的RDD?此外,有没有一种方法可以解决一些RDD,而不必全部解开?