我正在将Scala / Spark模型转换为Python / Spark。问题是我有RDD,大约有100万个观测值和大约33列。 我正在根据数字阈值('时间')拆分RDD。时间变量采用数字格式(双精度)(非posix)。
这是Scala源代码:
// get the time to split the data.
val splitTime = data.stat.approxQuantile("Time", Array(0.7), 0.001).head
val trainingData = data.filter(s"Time<$splitTime").cache()
val validData = data.filter(s"Time>=$splitTime").cache()
这是我的PySpark失败的解释:
splitTime = data.approxQuantile("Time", [0.7], 0.001)
trainingData = data.filter(data["Time"] < splitTime)
validData = data.filter(data["Time"] >= splitTime)
第一行正常。当我尝试在RDD上使用阈值时,问题就开始了。我也无法解决条件及其在条件中的重要性的Scala格式s" >=$ "
。关于s" >=$ "
含义的互联网来源含糊不清。
答案 0 :(得分:1)
approxQuantile
返回List[float]
(此处为单列案例)或List[List[float]]
(多列案例),因此您必须提取值:
splitTime = data.approxQuantile("Time", [0.7], 0.001)
data.filter(data["Time"] < splitTime[0])
或
(litTime, ) = data.approxQuantile("a", [0.7], 0.001)
trainingData = data.filter(data["Time"] < splitTime)