Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Apache Hadoop डेटा आउटपुट को Mysql डेटाबेस में स्टोर करना

बेहतरीन उदाहरण इस ब्लॉग पर दिखाया गया है। ए> , मैंने कोशिश की और यह वास्तव में अच्छी तरह से चला गया। मैं कोड के सबसे महत्वपूर्ण हिस्सों को उद्धृत करता हूं।

सबसे पहले, आपको उस डेटा का प्रतिनिधित्व करने वाला एक वर्ग बनाना होगा जिसे आप स्टोर करना चाहते हैं। कक्षा को DBWritable इंटरफ़ेस लागू करना चाहिए:

public class DBOutputWritable implements Writable, DBWritable
{
   private String name;
   private int count;

   public DBOutputWritable(String name, int count) {
     this.name = name;
     this.count = count;
   }

   public void readFields(DataInput in) throws IOException {   }

   public void readFields(ResultSet rs) throws SQLException {
     name = rs.getString(1);
     count = rs.getInt(2);
   }

   public void write(DataOutput out) throws IOException {    }

   public void write(PreparedStatement ps) throws SQLException {
     ps.setString(1, name);
     ps.setInt(2, count);
   }
}

अपने रेड्यूसर में पहले से परिभाषित वर्ग के ऑब्जेक्ट बनाएं:

public class Reduce extends Reducer<Text, IntWritable, DBOutputWritable, NullWritable> {

   protected void reduce(Text key, Iterable<IntWritable> values, Context ctx) {
     int sum = 0;

     for(IntWritable value : values) {
       sum += value.get();
     }

     try {
       ctx.write(new DBOutputWritable(key.toString(), sum), NullWritable.get());
     } catch(IOException e) {
       e.printStackTrace();
     } catch(InterruptedException e) {
       e.printStackTrace();
     }
   }
}

अंत में आपको अपने डीबी से कनेक्शन कॉन्फ़िगर करना होगा (क्लासपाथ पर अपना डीबी कनेक्टर जोड़ना न भूलें) और अपने मैपर और रेड्यूसर के इनपुट/आउटपुट डेटा प्रकारों को पंजीकृत करें।

public class Main
{
   public static void main(String[] args) throws Exception
   {
     Configuration conf = new Configuration();
     DBConfiguration.configureDB(conf,
     "com.mysql.jdbc.Driver",   // driver class
     "jdbc:mysql://localhost:3306/testDb", // db url
     "user",    // username
     "password"); //password

     Job job = new Job(conf);
     job.setJarByClass(Main.class);
     job.setMapperClass(Map.class); // your mapper - not shown in this example
     job.setReducerClass(Reduce.class);
     job.setMapOutputKeyClass(Text.class); // your mapper - not shown in this example
     job.setMapOutputValueClass(IntWritable.class); // your mapper - not shown in this example
     job.setOutputKeyClass(DBOutputWritable.class); // reducer's KEYOUT
     job.setOutputValueClass(NullWritable.class);   // reducer's VALUEOUT
     job.setInputFormatClass(...);
     job.setOutputFormatClass(DBOutputFormat.class);

     DBInputFormat.setInput(...);

     DBOutputFormat.setOutput(
     job,
     "output",    // output table name
     new String[] { "name", "count" }   //table columns
     );

     System.exit(job.waitForCompletion(true) ? 0 : 1);
   }
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP/MySQL:डेटाबेस में मॉडल दोहराए जाने वाले ईवेंट लेकिन दिनांक सीमाओं के लिए क्वेरी

  2. पीडीओ MySQL के साथ 2 टेबल में डालें

  3. मैक पर libmysqlclient15-dev?

  4. MySQL चार बनाम int

  5. एक ही टेबल में दो कॉलम कैसे जुड़ें