这是我的python spark代码
def parseLinesEcf4(line): #get the fields we need
fields = line.split('\t')
id1 = fields[0]
id2 = fields[1]
ecfp4 = float(fields[2])
return (id1, id2, ecfp4) #return two fields
conf = SparkConf().setMaster("local").setAppName("Second")
sc = SparkContext(conf = conf)
fileTwo = sc.textFile("PS21_ECFP4.tsv") #loads the data
dataTwo = fileTwo.map(parseLinesEcf4)我的输入如下所示

我的文件大小约为900 is。我需要的是获取列1的唯一值对应于同一列的唯一值的10%的行,因为一个复合有多个条目。
我尝试了takeSampe()和sampleBy(),但都没有返回我想要的结果。
有什么帮助吗??
发布于 2021-06-02 16:37:21
您可以尝试使用pyspark.ml库。
from pyspark.ml.evaluation import RegressionEvaluator
from pyspark.ml.regression import LinearRegression
from pyspark.ml.tuning import ParamGridBuilder, TrainValidationSplit
# Prepare training and test data.
data = spark.read.format("libsvm")\
.load("data/mllib/sample_linear_regression_data.txt")
train, test = data.randomSplit([0.9, 0.1], seed=12345)但请注意,要使用它,您需要使用VectorAssembler对数据进行矢量化
from pyspark.ml.linalg import Vectors
from pyspark.ml.feature import VectorAssembler
dataset = spark.createDataFrame(
[(0, 18, 1.0, Vectors.dense([0.0, 10.0, 0.5]), 1.0)],
["id", "hour", "mobile", "userFeatures", "clicked"])
assembler = VectorAssembler(
inputCols=["hour", "mobile", "userFeatures"],
outputCol="features")
output = assembler.transform(dataset)
print("Assembled columns 'hour', 'mobile', 'userFeatures' to vector column 'features'")
output.select("features", "clicked").show(truncate=False)https://spark.apache.org/docs/latest/ml-features.html#vectorassembler
https://stackoverflow.com/questions/61984139
复制相似问题