我想在Spark中使用MongoDB提供的數據運行k-means。 我有一個工作實施例中,其作用對一個平面文件:如何在kmeans中映射Spark中的MongoDB數據?
sc = SparkContext(appName="KMeansExample") # SparkContext
data = sc.textFile("/home/mhoeller/kmeans_data.txt")
parsedData = data.map(lambda line: array([int(x) for x in line.split(' ')]))
clusters = KMeans.train(parsedData, 2, maxIterations=10, initializationMode="random")
這是平面文件的格式爲:
現在我想用MongoDB的更換簡單文件:
spark = SparkSession \
.builder \
.appName("myApp") \
.config("spark.mongodb.input.uri", "mongodb://127.0.0.1/ycsb.usertable") \
.config("spark.mongodb.output.uri", "mongodb:/127.0.0.1/ycsb.usertable") \
.getOrCreate()
df = spark.read.format("com.mongodb.spark.sql.DefaultSource").option("uri","mongodb://127.0.0.1/ycsb.usertable").load()
# <<<< Here I am missing the parsing >>>>>
clusters = KMeans.train(parsedData, 2, maxIterations=10, initializationMode="random")
我喜歡瞭解如何映射df中的數據,以便它可以用作kmeans的輸入。
的數據庫的 「佈局」 是:
根
| - _id:字符串(可爲空=真)
| - field0:二進制(可爲空=真)
| - FIELD1:二進制(可空=真)
| - 場2:二進制(可爲空=真)
| - 場3:二進制(可爲空=真)
| - 字段4:二進制(可爲空=真)
| - 字段5:二進制(空值=真)
| - 基爾D6:二進制(可爲空=真)
| - 字段7:二進制(可爲空=真)
| - 字段8:二元的(可爲空=真)
| - 字段9:二元的(可爲空=真)