[英]value map is not a member of org.apache.spark.sql.Row
我有来自Twitter的复杂架构推文,我试图从这些推文中提取文本,然后清除数据以进行进一步分析。 我正在运行一个SQL查询以提取推文,然后当我尝试使用replaceAll或replace清理推文时,它一直抛出异常
值映射不是org.apache.spark.sql.Row的成员
因此,我试图寻找一种解决方案,并遇到了这个如何在Spark中编写程序来替换单词的方法 , 单词有点相似,但与字符串问题有关。 我试图用嵌套地图实现它,但是似乎没有用。
这是我的代码段:
val tweets = sc.textFile(tweetInput).filter(l => l.trim !="")
val tweetTable = sqlContext.jsonRDD(tweets)
tweetTable.registerTempTable("tweetTable")
sqlContext.cacheTable("tweetTable")
// read all tweets from input files
val trimmed_tweets = sqlContext.sql("SELECT text FROM tweetTable WHERE text <> '' ")
.map(x => x.map(_.replace("""([\p{Punct}&&[^.@]]|\b\p{IsLetter}{1,2}\b)\s*""", "")))
.toLowerCase()
.filter(_.nonEmpty)
.flatMap(x=>x)
由于saveAsTextFile也不是org.apache.spark.sql.Row的成员,因此我也无法对trimmed_tweets使用saveAsTextFile选项。
问题是您在Row
而不是String
。 首先,您必须从存储在第一列中的Row
提取推文文本。
val trimmed_tweets = sqlContext.sql("SELECT text FROM tweetTable WHERE text <> '' ")
.map(row => row.getString(0).replace("""([\p{Punct}&&[^.@]]|\b\p{IsLetter}{1,2}\b)\s*""", "")))
.toLowerCase()
.filter(_.nonEmpty)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.