如何在hadoopMap器中将字符串转换为可写对象

mkshixfv  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(259)

这是一个非常疯狂的问题打了我几个小时。
任何帮助都将不胜感激。
我不能

public void map(Object key, Text value, Context context) throws IOException, InterruptedException {
      if (!value.toString().equals("")) {

          Gson gson = new Gson();
          Boolean flag = true;
          System.out.println("000000000"); 
          while(flag){
              Text tweetId = new Text();
              Tweet tweet = gson.fromJson(value.toString(), Tweet.class);
              tweetId.set(tweet.getRetweetStatus().getUser().getId().toString());
              System.out.println("Tweet objects:" + tweet.toString());
              System.out.println("ParentUserId:" + tweetId);
              context.write(tweetId, tweet);
              flag = false;
          }
          Text tweetId = new Text();
          Tweet tweet = gson.fromJson(value.toString(), Tweet.class);
          tweetId.set(tweet.getUser().getId().toString());
          String tweetReverse = (Object) tweet.getRetweetStatus().getUser().getId();

          System.out.println("Reverse::");
          System.out.println("Tweet objects:" + tweetReverse);
          System.out.println("ParentUserId:" + tweetId);

          context.write(tweetId, tweetReverse);
      }
    }

我想把字符串对象'tweetreverse'转换成可写的,这样我就可以在context.write函数中使用它了。
这有可能吗?
如果不皈依我该怎么办?
如果我将泛型类型更改为string,那么在将可写扩展为读写值的类中也会出现问题。
任何帮助都将不胜感激。
提前多谢了。

ippsafx7

ippsafx71#

我觉得你需要的只是

context.write(tweetId, new Text(tweetReverse));

也就是说,您只需创建一个新的文本对象(它实现了writable)并在构造函数中传递一个字符串。

相关问题