Benzer konular hakkında birkaç soru sordum, ancak sorunumun hiçbir yanıtını uygulayamadım, ayrıca en iyi uygulamaları merak ediyorum.Veri kümesini SQL'den RDD'ye dönüştürme [vektör]
Bir SQL veritabanına ML için bir dateet yükledim. Mllib'in kümeleme işlevini buna göre uygulamak istiyorum. SQL veritabanını, sqlContext
kullanarak DataFrame
'a yükledim, alakasız sütunları bıraktım. Sonra sorunlu kısım oldu, DataFrame'in her satırı ayrıştırılarak bir vektör yaratıyorum. Vector, toJavaRDD
işlevini kullanarak RDD'ye dönüştürülür.
val usersDF = sqlContext.read.format("jdbc").option("url","jdbc:mysql://localhost/database").
option("driver","com.mysql.jdbc.Driver").option("dbtable","table").
option("user","woot").option("password","woot-password").load()
val cleanDF = usersDF.drop("id").drop("username")
cleanDF.show()
val parsedData = cleanDF.map(s => Vectors.dense(s.toString().replaceAll("[\\[\\]]", "").trim.split(',').map(_.toDouble))).cache()
val splits = parsedData.randomSplit(Array(0.6,0.4), seed = 11L)
val train_set = splits(0).cache()
val gmm = new GaussianMixture().setK(2).run(train_set)
: Local vector, DataFrame haritalama işçiler üzerinde gerçekleştirilen ve olacak benim anlayış daha sonra olacak İşte
kodu (işleri) 'dir Vektör yaratılırken Sürücüye gönderilen (Yerel vektörün anlamı mıdır) sadece daha sonra işçilere tekrar gönderilecek? Bunu başarmanın daha iyi bir yolu yok mu?Başka bir şey, SQL'i DataFrame'e yalnızca dizeye dönüştürmek ve tekrar ayrıştırmak için yüklemek biraz garip görünüyor. Başka en iyi uygulama önerileri var mı? link kaynaktan