2014-11-05 20 views
-2

這是幾個小時以來的一個非常瘋狂的問題。我應該如何將字符串轉換爲我的Hadoop映射器中的可寫入對象

任何幫助將不勝感激。

我不能

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); 
     } 
    } 

我想String對象「tweetReverse」轉換爲可寫,這樣我可以用它的context.write功能。

這甚至可能嗎?

如果不轉換,我該怎麼辦?

如果我將泛型類型更改爲字符串,那麼還會在將Writable擴展爲讀取和寫入值的類中遇到問題。

任何幫助將不勝感激。

非常感謝。

回答

3

我有一種感覺,所有你需要的只是

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

也就是說,你只需要創建一個新的文本對象(實現可寫),並通過在構造函數的字符串。

相關問題