Yerel bir klasörden veri aldığım ve her dönüşümü gerçekleştirdiğim klasöre yeni bir dosya bulduğum kıvılcım 1.2.0 ile kıvılcım akışı ortamım var. DStream verilere benim analizi gerçekleştirmek amacıylaBir kıvılcım akışı içeriğinde HDFS'ye bir RDD yazın
val ssc = new StreamingContext(sc, Seconds(10))
val data = ssc.textFileStream(directory)
Ben
var arr = new ArrayBuffer[String]();
data.foreachRDD {
arr ++= _.collect()
}
Sonra istediğim bilgiyi ayıklamak ve HDF'ler üzerine onları kurtarmak için elde edilen verileri kullanmak bir Array haline dönüştürmek zorundayız.
val myRDD = sc.parallelize(arr)
myRDD.saveAsTextFile("hdfs directory....")
Gerçekten (ince çalışacak olan) DStream.saveAsTextFiles("...")
ile HDF'ler verileri kaydetmek imkansız bir Array ile verileri işlemek için gerektiğinden ve RDD kurtarmak zorunda ama bu preocedure ile nihayet adında boş çıktı dosyaları var bölüm-00000 vb ...
Bir arr.foreach(println)
ile Transofmasyonların doğru sonuçlarını görebiliyorum.
Şüphelim, bu kıvılcım, daha önce yazılanları silerek, aynı dosyada veri yazmak için her parti üzerinde çalışır. myRDD.saveAsTextFile("folder" + System.currentTimeMillis().toString())
gibi bir dinamik adlandırılmış klasöre kaydetmeye çalıştım, ancak her zaman yalnızca bir kat oluşturulur ve çıktı dosyaları hala boş.
Bir kıvılcım akışı bağlamında HDFS'ye nasıl bir RDD yazabilirim?
Ben sorun varış bütün işçilerin mevcut olmamasıdır tahmin: Kıvılcım 1.5+ dataframes API bu özellik vardır. Arrınızı yayınlamaya çalışıp sonunda HDF'ye yazmayı denediniz mi? –
Çünkü bir klasörü izlemem gerekiyor ve yüklenen tüm yeni dosyaları kesip akan seslere iyi bir çözüm gibi geliyor. Tek bir makine değil, 2 makine grubu. Şimdi sadece dosyaları metin olarak yazıyorum, ancak gelecekte parke dosyaları yazmak zorunda kalacağım ve Spark – drstein
ile oldukça basit bir şekilde deneyebilecek misiniz? var arr = new ArrayBuffer [String](); val yayınlanan = sc.broadcast (arr) data.foreachRDD { yayınlanan ++ = _.collect() } val myRDD = sc.parallelize (yayınlanan) myRDD.saveAsTextFile ("HDF'ler dizini ...." –