![](/img/trans.png)
[英]Iterate a column values in a Stream dataframe and assign each value to a common list using Scala and Spark
[英]Converting a dataframe column with values to a list using spark and scala
+-----------------------------------------------------------------------------------------------------------------------------------------------+
|Texts |
+----------------------------------------------------------------------------------------------------------------------------------------------+
|RT @xxxxxx: post aqwe qwqq ssdd qaAQ WQWQW CSDWDW!!!
must RT ! |
|RT @xxxxx: aaa in ssss ssss ss sqqq this qqq in "sss" should xxxx xx at xx xaaaa aqw |
|RT @xxxx: QWW sadad jkhj to hjyhy a eryr rrryryry? ersfsfdsgdgdgg t rtrt ytyyryr.
sadwf wwewe ewewe jyiopo;l dwewre etet of the ddgdg-we dfdfdf, @b… |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
我想使用 scala 和 spark 在列表中的 Text 列中包含這些值行。
1. val newList = myDataframe.select("Texts").rdd.map(_(0)).collect.toList
2. val newList = myDataframe.select("Texts").collect().map(_(0)).toList
newList .foreach(println)
兩種方式都沒有給出任何 output 並且程序也不會終止。 沒有錯誤被拋出。
預期 output
["RT @xxxxxx: post aqwe qwqq ssdd qaAQ WQWQW CSDWDW!!! must RT !", "RT @xxxxx: aaa in ssss ssss ss sqqq this qqq in "sss" should xxxx xx at xx xaaaa aqw", "RT @xxxx: QWW sadad jkhj to hjyhy a eryr rrryryry? ersfsfdsgdgdgg t rtrt ytyyryr.
sadwf wwewe ewewe jyiopo;l dwewre etet of the ddgdg-we dfdfdf, @b…"]
請注意 dataframe 中每一行中的句子可能包含新行
例如I am going to the the shop.\n Its very expensive
這句話將顯示為
I am going to the shop
its very expensive
但兩者都屬於同一行。
以下方法正確地將 Z6A8064B5DF4794555500553C47C55057DZ 的列轉換為列表
1. val newList = myDataframe.select("Texts").rdd.map(_(0)).collect.toList
2. val newList = myDataframe.select("Texts").collect().map(_(0)).toList
但是問題中的 Dataframe 說每一行都可能包含新行。 因此上述方法不能直接工作。 應刪除第一行新行。
val singleLineDataframe = myDataframe.withColumn("Texts", regexp_replace(col("Texts"), "[\\r\\n\\n]", "."))
val sentenceList = singleLineDataframe.select("Texts").rdd.map(r => r(0)).collect.toList
for ( element <- sentenceList)
println(element)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.