Kullanıcı bilgisinin olduğu diziyle çalışıyorum. Bu dizelere benzersiz tamsayı değerleri atamak istiyorum.Bir pyspark veri çerçevesi sütununu RDD of tuple ile güncelleme
Bu yığın taşması sonrası here takip ediyordum. Ben sonuçta üzerinde ALS modeli çalıştırılır yapmak istiyorum ne
data = data.map(lambda x: Rating(int(user.lookup(x[0])), int(x[1]), float(x[2])))
yaptım Bundan sonra
user = data.map(lambda x:x[0]).distinct().zipWithUniqueId()
, ama şu ana kadar: Ben dizilerini bir RDD olması aşağıdaki ifadeyi kullanıyorum
Bu hata mesajını alıyorum: Bir RDD yayınlamaya çalıştığınız veya bir işlem veya dönüştürme işleminden bir RDD'ye başvurduğunuz anlaşılıyor.
Veri türü bir şekilde yanlış olduğunu düşünüyorum, ancak bunu nasıl düzelteceğimi bilmiyorum. Bağlantılı cevabın önerdiği
burada 2 sorunları vardır. Birincisi DataFrame'deki değerleri güncellemek istiyor, bu imkansız! DataFrame değişmezdir, mevcut olandan güncelleme dönüşümü ile yeni bir tane oluşturmanız gerekir. İkincisi, bir RDD'yi başka bir RDD dönüşümü içine yerleştiremezsiniz. RDD'niz küçükse yayın değişkenini düşünebilirsiniz. – eliasah
@eliasah Girişiniz için teşekkür ederiz. newData = data.map (lambda x: Rating (int (user.lookup (x [0])), int (x [1]), float (x [2]))) çalışacak mı, yoksa yapmak zorunda mıyım df = sqlContext.createDataFrame (?, [cols]) gibi bir şey, nerede yerine malzeme koymak için emin değilim. İkinci kısımda ise, RDD dönüşümünün içinde RDD'yi nerede yerleştiriyorum? Verilerim aslında oldukça büyük. – user2857014
Bu işe yarayabilir, denemeniz gerekecek! Yorumda kod okuyamıyorum. İkinci kısım için, kullanıcı değeriniz bir RDD'dir. İşte burada RDD'yi yerleştirmeye çalıştığınız yer. – eliasah