Spark Scala:另存为csv文件(RDD)
我曾尝试使用ApacheSpark来流式传输twitter数据,我想将流式传输的数据保存为csv文件,但我做不到 如何修复代码以使其进入csv 我使用RDD 这是我的主要代码:Spark Scala:另存为csv文件(RDD),scala,csv,apache-spark,Scala,Csv,Apache Spark,我曾尝试使用ApacheSpark来流式传输twitter数据,我想将流式传输的数据保存为csv文件,但我做不到 如何修复代码以使其进入csv 我使用RDD 这是我的主要代码: val ssc = new StreamingContext(conf, Seconds(3600)) val stream = TwitterUtils.createStream(ssc, None, filters) val tweets = stream.map(t => { Map( // T
val ssc = new StreamingContext(conf, Seconds(3600))
val stream = TwitterUtils.createStream(ssc, None, filters)
val tweets = stream.map(t => {
Map(
// This is for tweet
"text" -> t.getText,
"retweet_count" -> t.getRetweetCount,
"favorited" -> t.isFavorited,
"truncated" -> t.isTruncated,
"id_str" -> t.getId,
"in_reply_to_screen_name" -> t.getInReplyToScreenName,
"source" -> t.getSource,
"retweeted" -> t.isRetweetedByMe,
"created_at" -> t.getCreatedAt,
"in_reply_to_status_id_str" -> t.getInReplyToStatusId,
"in_reply_to_user_id_str" -> t.getInReplyToUserId,
// This is for tweet's user
"listed_count" -> t.getUser.getListedCount,
"verified" -> t.getUser.isVerified,
"location" -> t.getUser.getLocation,
"user_id_str" -> t.getUser.getId,
"description" -> t.getUser.getDescription,
"geo_enabled" -> t.getUser.isGeoEnabled,
"user_created_at" -> t.getUser.getCreatedAt,
"statuses_count" -> t.getUser.getStatusesCount,
"followers_count" -> t.getUser.getFollowersCount,
"favorites_count" -> t.getUser.getFavouritesCount,
"protected" -> t.getUser.isProtected,
"user_url" -> t.getUser.getURL,
"name" -> t.getUser.getName,
"time_zone" -> t.getUser.getTimeZone,
"user_lang" -> t.getUser.getLang,
"utc_offset" -> t.getUser.getUtcOffset,
"friends_count" -> t.getUser.getFriendsCount,
"screen_name" -> t.getUser.getScreenName
)
})
tweets.repartition(1).saveAsTextFiles("~/streaming/tweets")
您需要将RDD[Map[String,String]]格式的tweet转换为数据帧以另存为CSV。原因是简单RDD没有模式。而csv格式有一个特定的模式。因此,您必须将RDD转换为具有模式的数据帧 有几种方法可以做到这一点。一种方法是使用case类,而不是将数据放入映射中
case class(text:String, retweetCount:Int ...)
现在,使用适当的参数实例化case类,而不是Map(…)
最后,使用spark隐式转换将tweet转换为数据帧
import spark.implicits._
tweets.toDF.write.csv(...) // saves as CSV
或者,您可以使用给定的解决方案将地图转换为数据帧您需要将RDD[Map[String,String]]推文转换为数据帧以另存为CSV。原因是简单RDD没有模式。而csv格式有一个特定的模式。因此,您必须将RDD转换为具有模式的数据帧 有几种方法可以做到这一点。一种方法是使用case类,而不是将数据放入映射中
case class(text:String, retweetCount:Int ...)
现在,使用适当的参数实例化case类,而不是Map(…)
最后,使用spark隐式转换将tweet转换为数据帧
import spark.implicits._
tweets.toDF.write.csv(...) // saves as CSV
或者,您可以使用给定的解决方案将地图转换为数据帧您是否有RDD或数据集/帧。如果是后者,则有一种写入方法将CSV作为格式option@cricket_007这是一个RDD@user8371915不,我使用的是RDD而不是DFD。您是否有RDD或数据集/帧。如果是后者,则有一种写入方法将CSV作为格式option@cricket_007这是一个RDD@user8371915不,我使用的是RDD而不是DFT这些在tweet映射内或之后的更改?我尝试使用这种方法将映射转换为数据帧它可以工作,但如何分配twitter信息(getText、getRetweetCount等等)?它最终可以工作,感谢我们这些在tweet映射内或之后的更改?我尝试过使用这种方法将映射转换为数据帧它可以工作,但如何分配twitter信息(getText、getRetweetCount等等)?最后,感谢你