HDFS上のファイルに格納された点集合に関連する距離行列を計算した後、分散型(CoordinateMatrix/RowMatrix)で計算された距離行列をMongoDBに格納する必要がありますMongoDB Connector for Apache Spark。これを行うための推奨された方法、またはそのような操作のためのより良いコネクタがありますか?ここでMongoDBにSpark分散行列を格納する
は私のコードの一部です:
val data = sc.textFile("hdfs://localhost:54310/usrp/copy_sample_data.txt")
val points = data.map(s => Vectors.dense(s.split(',').map(_.toDouble)))
val indexed = points.zipWithIndex()
val indexedData = indexed.map{case (value, index) => (index, value)}
val pairedSamples = indexedData.cartesian(indexedData)
val dist = pairedSamples.map{case (x,y) => ((x,y),distance(x._2,y._2))}.map{case ((x,y),z) => (((x,y),z,covariance(z)))}
val entries: RDD[MatrixEntry] = dist.map{case (((x,y),z,cov)) => MatrixEntry(x._1, y._1, cov)}
val coomat: CoordinateMatrix = new CoordinateMatrix(entries)
さらに注意することは、私はRDDからスパークでこの行列を作成しました。 RDDからMongodbにデータを保存する方が良いかもしれません。
ありがとうございます。私はこのエラーを受け取ります: "値toDFはorg.apache.spark.rdd.RDDのメンバーではありません[.... MatrixEntry] – EdgeRover
' import spark.implicits._'ここで 'spark'は' SparkSession'オブジェクトです。 1.xは 'SQLContext'を使用します – zero323
はい、私は" import org.apache.spark.sql.SQLContext._ "を追加して、メインクラスの外にcoorMatの構造を移動しましたが、問題はまだ残っています – EdgeRover