繁体   English   中英

值映射不是org.apache.spark.sql.Row的成员

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM