DBInputFormat upang Maglipat ng Data Mula sa SQL patungo sa NoSQL Database



Layunin ng blog na ito na malaman kung paano maglipat ng data mula sa mga database ng SQL patungo sa HDFS, kung paano maglipat ng data mula sa mga database ng SQL patungo sa mga database ng NoSQL.

Sa blog na ito susuriin namin ang mga kakayahan at posibilidad ng isa sa pinakamahalagang sangkap ng teknolohiya ng Hadoop ibig sabihin, ang MapReduce.

Ngayon, ang mga kumpanya ay gumagamit ng balangkas ng Hadoop bilang kanilang unang pagpipilian para sa pag-iimbak ng data dahil sa mga kakayahan nitong hawakan ang malaking data nang mabisa. Ngunit alam din natin na ang data ay maraming nalalaman at umiiral sa iba't ibang mga istraktura at format. Upang makontrol ang napakalaking pagkakaiba-iba ng data at ang iba't ibang mga format ay dapat mayroong isang mekanismo upang mapaunlakan ang lahat ng mga pagkakaiba-iba at makagawa pa ng isang mabisa at pare-pareho na resulta.





Ang pinakamakapangyarihang sangkap sa balangkas ng Hadoop ay ang MapReduce na maaaring magbigay ng kontrol sa data at ng istraktura na mas mahusay kaysa sa iba pang mga katapat. Kahit na nangangailangan ito ng overhead ng curve sa pag-aaral at pagiging kumplikado ng programa, kung mahawakan mo ang mga pagkakumplikadong ito maaari mong tiyak na hawakan ang anumang uri ng data sa Hadoop.

Ang balangkas ng MapReduce ay sumisira sa lahat ng mga gawain sa pagpoproseso sa karaniwang dalawang yugto: Mapa at Bawasan.



Ang paghahanda ng iyong hilaw na data para sa mga phase na ito ay nangangailangan ng pag-unawa sa ilang pangunahing mga klase at interface. Ang sobrang klase para sa muling pagproseso na ito ay InputFormat.

Ang InputFormat Ang klase ay isa sa pangunahing mga klase sa Hadoop MapReduce API. Ang klase na ito ay responsable para sa pagtukoy ng dalawang pangunahing bagay:

  • Hinahati ang data
  • Record reader

Hatiin ang data ay isang pangunahing konsepto sa Hadoop MapReduce framework na tumutukoy sa parehong laki ng mga indibidwal na gawain sa mapa at ang potensyal na server ng pagpapatupad nito. Ang Reader ng Record ay responsable para sa aktwal na mga tala ng pagbabasa mula sa file ng pag-input at pagsumite ng mga ito (bilang mga pares ng key / halaga) sa mapper.



Ang bilang ng mga mappers ay napagpasyahan batay sa bilang ng mga paghati. Ito ay ang trabaho ng InputFormat upang lumikha ng mga split. Karamihan sa laki ng hati ng oras ay katumbas ng laki ng pag-block ngunit hindi palaging nilikha ang mga paghati batay sa laki ng block ng HDFS. Ito ay ganap na nakasalalay sa kung paano ang paraan ng getSplits () ng iyong InputFormat ay na-override.

Mayroong isang pangunahing pagkakaiba sa pagitan ng paghati ng MR at HDFS block. Ang isang bloke ay isang pisikal na tipak ng data habang ang isang split ay isang lohikal na tipak lamang na binabasa ng isang mapper. Ang isang split ay hindi naglalaman ng input data, mayroon lamang itong sanggunian o address ng data. Ang isang split ay karaniwang mayroong dalawang bagay: Isang haba sa mga byte at isang hanay ng mga lokasyon ng imbakan, na kung saan ay mga string lamang.

Upang mas maintindihan ito, kumuha tayo ng isang halimbawa: Pagproseso ng data na nakaimbak sa iyong MySQL gamit ang MR. Dahil walang konsepto ng mga bloke sa kasong ito, ang teorya: 'Ang mga paghati ay laging nilikha batay sa HDFS block',nabigo. Ang isang posibilidad ay upang lumikha ng mga paghati batay sa mga saklaw ng mga hilera sa iyong talahanayan ng MySQL (at ito ang ginagawa ng DBInputFormat, isang format ng pag-input para sa pagbabasa ng data mula sa isang nauugnay na mga database). Maaari kaming magkaroon ng k bilang ng mga paghati na binubuo ng mga n row.

Para lamang ito sa mga InputFormats batay sa FileInputFormat (isang InputFormat para sa paghawak ng data na nakaimbak sa mga file) na ang mga paghati ay nilikha batay sa kabuuang sukat, sa mga byte, ng mga file ng pag-input. Gayunpaman, ang pagharang ng FileSystem ng mga file ng pag-input ay itinuturing bilang isang itaas na hangganan para sa mga split ng pag-input. Kung mayroon kang isang file na mas maliit kaysa sa laki ng block ng HDFS, makakakuha ka lamang ng 1 mapper para sa file na iyon. Kung nais mong magkaroon ng ilang iba't ibang pag-uugali, maaari mong gamitin ang mapred.min.split.size. Ngunit muli itong nakasalalay lamang sa getSplits () ng iyong InputFormat.

Mayroon kaming napakaraming paunang mayroon nang mga format ng pag-input na magagamit sa ilalim ng package org.apache.hadoop.mapreduce.lib.input.

CombineFileInputFormat.html

CombineFileRecordReader.html

CombineFileRecordReaderWrapper.html

CombineFileSplit.html

CombineSequenceFileInputFormat.html

CombineTextInputFormat.html

FileInputFormat.html

FileInputFormatCounter.html

FileSplit.html

FixedLengthInputFormat.html

Di-wastongInputException.html

KeyValueLineRecordReader.html

ano ang isang halimbawa ng isang klase sa java

KeyValueTextInputFormat.html

MultipleInputs.html

NLineInputFormat.html

SequenceFileAsBinaryInputFormat.html

SequenceFileAsTextInputFormat.html

SequenceFileAsTextRecordReader.html

SequenceFileInputFilter.html

SequenceFileInputFormat.html

SequenceFileRecordReader.html

TextInputFormat.html

Ang default ay TextInputFormat.

Katulad nito, mayroon kaming napakaraming mga format ng output na binabasa ang data mula sa mga reducer at iniimbak ito sa HDFS:

FileOutputCommitter.html

FileOutputFormat.html

FileOutputFormatCounter.html

FilterOutputFormat.html

LazyOutputFormat.html

MapFileOutputFormat.html

MultipleOutputs.html

NullOutputFormat.html

PartialFileOutputCommitter.html

PartialOutputCommitter.html

SequenceFileAsBinaryOutputFormat.html

SequenceFileOutputFormat.html

TextOutputFormat.html

Default na pagiging TextOutputFormat.

Sa oras na matapos mo ang pagbabasa ng blog na ito, malalaman mo na:

  • Paano magsulat ng isang programa na nagbabawas ng mapa
  • Tungkol sa iba't ibang mga uri ng InputFormats na magagamit sa Mapreduce
  • Ano ang kailangan ng InputFormats
  • Paano sumulat ng pasadyang InputFormats
  • Paano maglipat ng data mula sa mga database ng SQL sa HDFS
  • Paano maglipat ng data mula sa mga database ng SQL (dito MySQL) sa mga database ng NoSQL (dito Hbase)
  • Paano maglipat ng data mula sa isang database ng SQL sa iba pang talahanayan sa mga database ng SQL (Marahil ay maaaring hindi ito gaanong kahalaga kung gagawin natin ito sa parehong database ng SQL. Gayunpaman, walang mali sa pagkakaroon ng kaalaman ng pareho. Hindi mo alam paano ito magagamit)

Pangangailangan:

  • Paunang naka-install na Hadoop
  • Paunang naka-install na SQL
  • Paunang naka-install na Hbase
  • Pangunahing kaalaman sa Java
  • MapReduce kaalaman
  • Hadoop framework pangunahing kaalaman

Unawain natin ang pahayag ng problema kung saan natin malulutas dito:

Mayroon kaming talahanayan ng empleyado sa MySQL DB sa aming pamanggit na database ng Edureka. Ngayon alinsunod sa kinakailangan sa negosyo kailangan naming ilipat ang lahat ng data na magagamit sa pamanggit na DB sa Hadoop file system ibig sabihin, HDFS, NoSQL DB na kilala bilang Hbase.

Marami kaming pagpipilian upang magawa ang gawaing ito:

  • Sqoop
  • Flume
  • MapReduce

Ngayon, hindi mo nais na mai-install at mai-configure ang anumang iba pang tool para sa operasyong ito. Naiiwan ka lamang sa isang pagpipilian na ang framework ng pagproseso ng Hadoop na MapReduce. Ang framework ng MapReduce ay magbibigay sa iyo ng buong kontrol sa data habang naglilipat. Maaari mong manipulahin ang mga haligi at ilagay nang direkta sa alinman sa dalawang target na lokasyon.

Tandaan:

  • Kailangan naming mag-download at ilagay ang konektor ng MySQL sa classpath ng Hadoop upang kumuha ng mga talahanayan mula sa talahanayan ng MySQL. Upang magawa itong i-download ang konektor com.mysql.jdbc_5.1.5.jar at panatilihin ito sa ilalim ng direktoryo ng Hadoop_home / share / Hadoop / MaPreduce / lib.
cp Mga Pag-download / com.mysql.jdbc_5.1.5.jar $ HADOOP_HOME / ibahagi / hadoop / mapreduce / lib /
  • Gayundin, ilagay ang lahat ng mga garapon ng Hbase sa ilalim ng Hadoop classpath upang ma-access ang iyong MR na programa sa Hbase. Upang magawa ito, ipatupad ang sumusunod na utos :
cp $ HBASE_HOME / lib / * $ HADOOP_HOME / share / hadoop / mapreduce / lib /

Ang mga bersyon ng software na ginamit ko sa pagpapatupad ng gawaing ito ay:

  • Hadooop-2.3.0
  • HBase 0.98.9-Hadoop2
  • Eclipse Moon

Upang maiwasan ang programa sa anumang isyu sa pagiging tugma, inireseta ko ang aking mga mambabasa na patakbuhin ang utos na may katulad na kapaligiran.

Pasadyang DBInputWritable:

package com.inputFormat.copy import java.io.DataInput import java.io.DataOutput import java.io.IOException import java.sql.ResultSet import java.sql.PreparedStatement import java.sql.SQLException import org.apache.hadoop.io .Masusulat na pag-import ng org.apache.hadoop.mapreduce.lib.db.DBWritable pampublikong klase na DBInputWritable ay nagpapatupad ng Nasusulat, DBWritable {pribadong int id pribadong pangalan ng String, dept ng publiko na walang bisa na readFields (DataInput sa) nagtatapon ng IOException {} pampublikong walang bisa na readFields (ResultSet rs) nagtatapon ng SQLException // Kinakatawan ng object ng Resulta ang data na ibinalik mula sa isang pahayag ng SQL na {id = rs.getInt (1) pangalan = rs.getString (2) dept = rs.getString (3)} pampublikong walang bisa na pagsulat (DataOutput out) na nagtatapon ng IOException { } ang publikong walang bisa na pagsulat (PreparedStatement ps) ay nagtatapon ng SQLException {ps.setInt (1, id) ps.setString (2, pangalan) ps.setString (3, dept)} publiko int getId () {return id} pampublikong String getName () {return name} public String getDept () {return dept}}

Pasadyang DBOutputWritable:

package com.inputFormat.copy import java.io.DataInput import java.io.DataOutput import java.io.IOException import java.sql.ResultSet import java.sql.PreparedStatement import java.sql.SQLException import org.apache.hadoop.io .Masusulat na pag-import ng org.apache.hadoop.mapreduce.lib.db.DBWritable pampublikong klase na DBOutputWritable ay nagpapatupad ng Nasusulat, DBWritable {pribadong pangalan ng String pribadong int id na pribadong String na dept ng publiko DBOutputWritable (String name, int id, String dept) {this.name = pangalanan this.id = id this.dept = dept} public void readFields (DataInput in) ay nagtatapon ng IOException {} public void readFields (ResultSet rs) ay nagtapon ng SQLException {} public void magsulat (DataOutput out) nagtatapon ng IOException {} publiko na walang bisa magsulat (PreparedStatement ps) nagtatapon ng SQLException {ps.setString (1, pangalan) ps.setInt (2, id) ps.setString (3, dept)}}

Talaan ng Input:

lumikha ng database edureka
lumikha ng talahanayan emp (empid int not null, name varchar (30), dept varchar (20), pangunahing key (empid))
ipasok sa mga halaga ng emp (1, 'abhay', 'developement'), (2, 'brundesh', 'test')
piliin ang * mula sa emp

Kaso 1: Paglipat mula sa MySQL sa HDFS

package com.inputFormat.copy import java.net.URI import org.apache.hadoop.conf.Configuration import org.apache.hadoop.fs.FileSystem import org.apache.hadoop.fs.Path import org.apache.hadoop.mapreduce .Job import org.apache.hadoop.mapreduce.lib.db.DBConfiguration import org.apache.hadoop.mapreduce.lib.db.DBInputFormat import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat import org.apache.hadoop .io.Text import org.apache.hadoop.io.IntWritable public class MainDbtohdfs {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 / edureka ', // db url' root ', // user name' root ') // password Job job = new Job (conf) job .setJarByClass (MainDbtohdfs.class) job.setMapperClass (Map.class) job.setMapOutputKeyClass (Text.class) job.setMapOutputValueClass (IntWritable.class) job.setInputFormatClass (DBInputFormat.class) FileOutputFormat (FileInputFormat.class) bagong Path (args [0])) DBInputFormat.setInput (trabaho, DBInputWritable.class, 'emp', // input table name null, null, new String [] {'empid', 'name', 'dept'} / / mga haligi ng talahanayan) Path p = bagong Path (args [0]) FileSystem fs = FileSystem.get (bagong URI (args [0]), conf) fs.delete (p) System.exit (job.waitForCompletion (true)? 0: 1)}}

Hinahayaan ka ng piraso ng code na ito na maghanda o mai-configure ang inputformat upang ma-access ang aming mapagkukunan ng SQL DB. Kasama sa parameter ang klase ng driver, ang URL ay may address ng SQL database, ang username nito at ang password.

DBConfiguration.configureDB (conf, 'com.mysql.jdbc.Driver', // driver class 'jdbc: mysql: // localhost: 3306 / edureka', // db url 'root', // user name 'root') // password

Pinapayagan kami ng piraso ng code na ipasa ang mga detalye ng mga talahanayan sa database at itakda ito sa object ng trabaho. Kasama sa mga parameter syempre ang halimbawa ng trabaho, ang pasadyang nakasulat na klase na dapat ipatupad ang interface ng DBWritable, ang pangalan ng pinagmulan ng talahanayan, kundisyon kung mayroon man namang null, anumang mga parameter ng pag-uuri ay null, ang listahan ng mga haligi ng talahanayan ayon sa pagkakabanggit.

DBInputFormat.setInput (trabaho, DBInputWritable.class, 'emp', // input table name null, null, new String [] {'empid', 'name', 'dept'} // mga haligi ng talahanayan)

Mapper

package com.inputFormat.copy import java.io.IOException import org.apache.hadoop.mapreduce.Mapper import org.apache.hadoop.io.LongWritable import org.apache.hadoop.io.Txt import org.apache.hadoop.io .Nagpapatuloy ang mapa ng mapa na Hindi Nasulat na publikong Mapper
protektado na walang bisa na mapa (LongWritable key, DBInputWritable na halaga, Context ctx) {subukan {String name = value.getName () IntWritable id = new IntWritable (value.getId ()) String dept = value.getDept ()
ctx.write (bagong Text (pangalan + '' + id + '' + dept), id)
} catch (IOException e) {e.printStackTrace ()} catch (InterruptException e) {e.printStackTrace ()}}}

Reducer: Ginamit ang Reducer ng Pagkakakilanlan

Command na tumakbo:

hadoop jar dbhdfs.jar com.inputFormat.copy.MainDbtohdfs / dbtohdfs

Output: Ang Aking Talahanayan ng MySQL Inilipat sa HDFS

hadoop dfs -ls / dbtohdfs / *

Kaso 2: Paglipat Mula sa Isang Talahanayan sa MySQL patungo sa Isa pa sa MySQL

lumilikha ng output table sa MySQL

lumikha ng empleyado ng talahanayan1 (pangalan ng varchar (20), id int, dept varchar (20))

package com.inputFormat.copy import org.apache.hadoop.conf.Configuration import org.apache.hadoop.mapreduce.Job import org.apache.hadoop.mapreduce.lib.db.DBConfiguration import org.apache.hadoop.mapreduce.lib .db.DBInputFormat import org.apache.hadoop.mapreduce.lib.db.DBOutputFormat import org.apache.hadoop.io.Txt import org.apache.hadoop.io.IntWritable import org.apache.hadoop.io.NullWritable public class Mainonetable_to_other_table {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 / edureka ', // db url' root ', // user name' root ') // password Job job = new Job (conf) job.setJarByClass (Mainonetable_to_other_table.class) job.setMapperClass (Map.class) job .setReducerClass (Reduce.class) job.setMapOutputKeyClass (Text.class) job.setMapOutputValueClass (IntWritable.class) job.setOutputKeyClass (DBOutputWritable.class) job.setOutputValueClass (Nul lWritable.class) job.setInputFormatClass (DBInputFormat.class) job.setOutputFormatClass (DBOutputFormat.class) DBInputFormat.setInput (trabaho, DBInputWritable.class, 'emp', // input table name null, null, new String [] {'empid ',' name ',' dept '} // mga haligi ng talahanayan) DBOutputFormat.setOutput (trabaho,' empleyado1 ', // pangalan ng talahanayan ng output ng bagong String [] {' pangalan ',' id ',' dept '} // talahanayan mga haligi) System.exit (job.waitForCompletion (totoo)? 0: 1)}}

Pinapayagan kami ng piraso ng code na ito na mai-configure ang pangalan ng talahanayan ng output sa SQL DB. Ang mga parameter ay halimbawa ng trabaho, pangalan ng table ng output at mga pangalan ng haligi ng output ayon sa pagkakabanggit.

DBOutputFormat.setOutput (trabaho, 'empleyado1', // pangalan ng talahanayan ng output bagong String [] {'pangalan', 'id', 'dept'} // mga haligi ng talahanayan)

Mapper: Pareho sa Kaso 1

Reducer:

package com.inputFormat.copy import java.io.IOException import org.apache.hadoop.mapreduce.Reducer import org.apache.hadoop.io.Txt import org.apache.hadoop.io.IntWritable import org.apache.hadoop.io .NullWritable public class Bawasan ang nagpapalawak ng Reducer {protektado ng void bawas (Text key, Iterable na halaga, Contex ctx) {int sum = 0 String line [] = key.toString (). Split (') subukan ang {ctx.write (bagong DBOutputWritable (linya [0] .toString (), Integer.parseInt (linya [1] .toString ()), linya [2] .toString ()), NullWritable.get ())} catch (IOException e) {e.printStackTrace ()} catch (InterruptException e) {e.printStackTrace ()}}}

Command na Tumakbo:

hadoop jar dbhdfs.jar com.inputFormat.copy.Mainonetable_to_other_table

Output: Inilipat na Data Mula sa Talaan ng EMP sa MySQL patungo sa Isa pang Opisina ng Talahanayan1 sa MySQL

Kaso 3: Paglipat Mula sa Talahanayan sa MySQL sa NoSQL (Hbase) na Talahanayan

Lumilikha ng talahanayan ng Hbase upang mapaunlakan ang output mula sa talahanayan ng SQL:

lumikha ng 'empleyado', 'official_info'

Klase ng Driver:

package Dbtohbase import org.apache.hadoop.conf.Configuration import org.apache.hadoop.mapreduce.Job import org.apache.hadoop.mapreduce.lib.db.DBConfiguration import org.apache.hadoop.mapreduce.lib.db.DBInputFormat import org.apache.hadoop.hbase.mapreduce.TableOutputFormat import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.client.HTable import org.apache.hadoop.hbase.client.HTableInterface import org.apache .hadoop. HBaseConfiguration.create () HTableInterface mytable = bagong HTable (conf, 'emp') DBConfiguration.configureDB (conf, 'com.mysql.jdbc.Driver', // driver class 'jdbc: mysql: // localhost: 3306 / edureka' , // db url 'root', // user name 'root') // password Job job = new Job (conf, 'dbtohbase') job.setJarByClass (MainDbToHbase.class) job.s etMapperClass (Map.class) job.setMapOutputKeyClass (ImmutableBytesWritable.class) job.setMapOutputValueClass (Text.class) TableMapReduceUtil.initTableReducerJob ('empleyado', Reduce.class, job) job.setInputFormatClass (Classify) klase) DBInputFormat.setInput (trabaho, DBInputWritable.class, 'emp', // input table name null, null, new String [] {'empid', 'name', 'dept'} // mga haligi ng talahanayan) System.exit (job.waitForCompletion (totoo)? 0: 1)}}

Hinahayaan ka ng piraso ng code na ito na mai-configure ang output key class na sa kaso ng hbase ay ImmutableBytesWritable

job.setMapOutputKeyClass (ImmutableBytesWritable.class) job.setMapOutputValueClass (Text.class)

Dito ipinapasa namin ang pangalan ng talahanayan ng hbase at ang reducer upang kumilos sa mesa.

TableMapReduceUtil.initTableReducerJob ('empleyado', Reduce.class, trabaho)

Mapper:

package Dbtohbase import java.io.IOException import org.apache.hadoop.mapreduce.Mapper import org.apache.hadoop.hbase.io.ImmutableBytesWritable import org.apache.hadoop.hbase.util.Bytes import org.apache.hadoop.io .LongWritable import org.apache.hadoop.io.Txt import org.apache.hadoop.io.IntWritable public class Map ay nagpapalawak sa Mapper {pribadong IntWritable one = bagong IntWritable (1) na protektadong void map (LongWritable id, DBInputWritable na halaga, konteksto ng konteksto) {subukan ang {String line = value.getName () String cd = value.getId () + 'String dept = value.getDept () konteks.write (bagong ImmutableBytesWritable (Bytes.toBytes (cd)), bagong Text (linya + ' '+ dept))} catch (IOException e) {e.printStackTrace ()} catch (InterruptException e) {e.printStackTrace ()}}}

Sa piraso ng code na ito kumukuha kami ng mga halaga mula sa mga nakakakuha ng klase ng DBinputwritable at pagkatapos ay ipinapasa ito
ImmutableBytesWritable upang maabot nila ang reducer sa bytewriatble form na naiintindihan ni Hbase.

String line = value.getName () String cd = value.getId () + 'String dept = value.getDept () konteksto. Magsulat (bagong ImmutableBytesWritable (Bytes.toBytes (cd)), bagong Text (line +' + dept ))

Reducer:

package Dbtohbase import java.io.IOException import org.apache.hadoop.hbase.client.Put import org.apache.hadoop.hbase.io.ImmutableBytesWritable import org.apache.hadoop.hbase.mapreduce.TableReducer import org.apache.hadoop .hbase.util.Bytes import org.apache.hadoop.io.Text public class Bawasan ang pagpapalawak ng TableReducer {publikong walang bisa bawasan (ImmutableBytesWritable key, Iterable na halaga, konteksto ng konteksto) ay nagtatapon ng IOException, InterruptException {String [] sanhi = null // Loop na mga halaga para sa (Text val: halaga) {sanhi = val.toString (). split (')} // Ilagay sa HBase Put put = bagong Put (key.get ()) put.add (Bytes.toBytes ('official_info' ), Bytes.toBytes ('pangalan'), Bytes.toBytes (sanhi [0])) put.add (Bytes.toBytes ('official_info'), Bytes.toBytes ('department'), Bytes.toBytes (sanhi [1 ])) konteksto. sumulat (susi, ilagay)}}

Pinapayagan kami ng piraso ng code na ito na magpasya sa eksaktong hilera at ng haligi kung saan kami magtatago ng mga halaga mula sa reducer. Dito ay itinatago namin ang bawat empid sa magkakahiwalay na hilera habang ginawa namin ang empid bilang row key na magiging natatangi. Sa bawat hilera ay itinatago namin ang opisyal na impormasyon ng mga empleyado sa ilalim ng pamilya ng haligi na 'official_info' sa ilalim ng mga haligi na 'pangalan' at 'kagawaran' ayon sa pagkakabanggit.

Put put = new Put (key.get ()) put.add (Bytes.toBytes ('official_info'), Bytes.toBytes ('name'), Bytes.toBytes (sanhi [0])) put.add (Bytes. toBytes ('official_info'), Bytes.toBytes ('department'), Bytes.toBytes (sanhi [1])) konteksto. pagsulat (susi, ilagay)

Inilipat na Data sa Hbase:

empleyado ng pag-scan

Tulad ng nakikita naming nakumpleto namin ang gawain ng paglipat ng aming data ng negosyo mula sa isang pahiwatig na SQL DB sa isang NoSQL DB na matagumpay.

Sa susunod na blog matututunan namin kung paano magsulat at magpatupad ng mga code para sa iba pang mga format ng pag-input at output.

Patuloy na mai-post ang iyong mga komento, katanungan o anumang puna. Gusto kong marinig mula sa iyo.

May tanong ba sa amin? Mangyaring banggitin ito sa seksyon ng mga komento at babalikan ka namin.

Mga Kaugnay na Post:

ano ang br tag sa html