DBInputFormat duomenims perkelti iš SQL į NoSQL duomenų bazę



Šio tinklaraščio tikslas yra išmokti perkelti duomenis iš SQL duomenų bazių į HDFS, kaip perkelti duomenis iš SQL duomenų bazių į NoSQL duomenų bazes.

Šiame tinklaraštyje išnagrinėsime vieno iš svarbiausių „Hadoop“ technologijos komponentų, t. Y. „MapReduce“, galimybes ir galimybes.

Šiandien įmonės priima „Hadoop“ sistemą kaip savo pirmąjį pasirinkimą saugoti duomenis dėl savo galimybių efektyviai tvarkyti didelius duomenis. Bet mes taip pat žinome, kad duomenys yra universalūs ir egzistuoja įvairiomis struktūromis ir formatais. Norint kontroliuoti tokią didžiulę duomenų įvairovę ir skirtingus jų formatus, turėtų būti sukurtas visų veislių pritaikymo ir veiksmingo bei nuoseklaus rezultato mechanizmas.





Pats galingiausias „Hadoop“ sistemos komponentas yra „MapReduce“, kuris gali geriau valdyti duomenis ir jų struktūrą nei kiti jo kolegos. Nors tam reikia mokymosi kreivės pridėtinės vertės ir sudėtingo programavimo, jei sugebėsite suvaldyti šiuos sudėtingumus, su „Hadoop“ tikrai galėsite tvarkyti bet kokius duomenis.

„MapReduce“ sistema suskirsto visas apdorojimo užduotis iš esmės į dvi fazes: Žemėlapis ir Redukcija.



Norint paruošti pradinius duomenis šiems etapams, reikia suprasti kai kurias pagrindines klases ir sąsajas. Super klasė šiam perdirbimui yra „InputFormat“.

The „InputFormat“ klasė yra viena iš pagrindinių „Hadoop MapReduce“ API klasių. Ši klasė yra atsakinga už dviejų pagrindinių dalykų apibrėžimą:

kam naudojama lėlė
  • Duomenys padalijami
  • Įrašų skaitytuvas

Duomenų padalijimas yra pagrindinė „Hadoop MapReduce“ sistemos koncepcija, apibrėžianti atskirų žemėlapio užduočių dydį ir galimą jos vykdymo serverį. The Įrašų skaitytuvas yra atsakingas už faktinius įrašų skaitymus iš įvesties bylos ir jų (kaip raktų / reikšmių porų) pateikimą žemėlapio sudarytojui.



Žemėlapių sudarytojų skaičius nustatomas pagal padalijimų skaičių. „InputFormat“ darbas yra sukurti padalijimus. Dažniausiai padalijimo dydis prilygsta bloko dydžiui, tačiau ne visada skilimai bus sukurti pagal HDFS bloko dydį. Tai visiškai priklauso nuo to, kaip buvo pakeistas „InputFormat“ metodas getSplits ().

Yra esminis skirtumas tarp MR padalijimo ir HDFS blokavimo. Blokas yra fizinis duomenų rinkinys, o padalijimas yra tik loginis gabalas, kurį žemėlapininkas skaito. Dalijime nėra įvesties duomenų, jis tiesiog turi duomenų nuorodą arba adresą. Išskaidymas iš esmės turi du dalykus: ilgis baitais ir saugojimo vietų, kurios yra tik eilutės, rinkinys.

Norėdami tai geriau suprasti, paimkime vieną pavyzdį: „MySQL“ saugomų duomenų apdorojimas naudojant MR. Kadangi šiuo atveju nėra blokų sąvokos, teorija: „padalijimai visada kuriami remiantis HDFS bloku“,nepavyksta. Viena galimybė yra sukurti padalijimus pagal „MySQL“ lentelės eilučių diapazonus (ir tai daro „DBInputFormat“, įvesties formatas duomenims iš reliacinių duomenų bazių nuskaityti). Mes galime turėti k skaičių padalijimų, susidedančių iš n eilučių.

Tik „InputFormats“, pagrįstų „FileInputFormat“ („InputFormat“, skirtas failuose saugomiems duomenims tvarkyti), padalijimai sukuriami pagal bendrą įvesties failų dydį baitais. Tačiau „FileSystem“ įvesties failų bloko dydis laikomas viršutine įvesties skaidymo riba. Jei turite failą, mažesnį nei HDFS bloko dydis, už šį failą gausite tik 1 žemėlapį. Jei norite elgtis kitaip, galite naudoti mapred.min.split.size. Bet tai vėlgi priklauso tik nuo jūsų „InputFormat“ getSplits ().

Mes turime tiek daug jau esamų įvesties formatų, pasiekiamų pakete 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

„InvalidInputException.html“

KeyValueLineRecordReader.html

KeyValueTextInputFormat.html

„MultipleInputs.html“

NLineInputFormat.html

SequenceFileAsBinaryInputFormat.html

SequenceFileAsTextInputFormat.html

SequenceFileAsTextRecordReader.html

SequenceFileInputFilter.html

SequenceFileInputFormat.html

SequenceFileRecordReader.html

„TextInputFormat.html“

Numatytasis parametras yra „TextInputFormat“.

Panašiai turime tiek daug išvesties formatų, kurie nuskaito reduktorių duomenis ir saugo juos HDFS:

FileOutputCommitter.html

FileOutputFormat.html

FileOutputFormatCounter.html

„FilterOutputFormat.html“

LazyOutputFormat.html

„MapFileOutputFormat.html“

objektų masyvas java

„MultipleOutputs.html“

NullOutputFormat.html

PartialFileOutputCommitter.html

PartialOutputCommitter.html

SequenceFileAsBinaryOutputFormat.html

SequenceFileOutputFormat.html

„TextOutputFormat.html“

Numatytoji reikšmė yra „TextOutputFormat“.

Baigę skaityti šį tinklaraštį būtumėte išmokę:

  • Kaip parašyti žemėlapio mažinimo programą
  • Apie įvairius „InputFormats“ tipus, pasiekiamus Mapreduce
  • Koks yra „InputFormats“ poreikis
  • Kaip rašyti pasirinktinius „InputFormats“
  • Kaip perkelti duomenis iš SQL duomenų bazių į HDFS
  • Kaip perkelti duomenis iš SQL (čia MySQL) duomenų bazių į NoSQL duomenų bazes (čia Hbase)
  • Kaip perkelti duomenis iš vienos SQL duomenų bazės į kitą SQL duomenų bazių lentelę (Galbūt tai gali būti ne taip svarbu, jei tai darome toje pačioje SQL duomenų bazėje. Tačiau nėra nieko blogo žinoti apie tą patį. Niekada negali žinoti kaip jis gali būti naudojamas

Būtina sąlyga:

  • „Hadoop“ iš anksto įdiegtas
  • Iš anksto įdiegta SQL
  • Iš anksto įdiegta „Hbase“
  • Pagrindinis Java supratimas
  • „MapReduce“ žinios
  • „Hadoop“ pagrindo pagrindinės žinios

Supraskime problemos teiginį, kurį čia išspręsime:

Reliacinėje duomenų bazėje „Edureka“ turime darbuotojų lentelę MySQL DB. Dabar pagal verslo reikalavimus turime perkelti visus reliacinėje DB esančius duomenis į „Hadoop“ failų sistemą, ty HDFS, NoSQL DB, žinomus kaip „Hbase“.

Mes turime daug galimybių atlikti šią užduotį:

  • Sqoop
  • Flume
  • „MapReduce“

Dabar nenorite įdiegti ir sukonfigūruoti jokio kito šios operacijos įrankio. Jums lieka tik viena parinktis, tai yra „Hadoop“ apdorojimo sistema „MapReduce“. „MapReduce“ sistema suteiktų jums pilną kontrolę duomenims perkėlimo metu. Galite manipuliuoti stulpeliais ir įdėti tiesiai į bet kurią iš dviejų tikslinių vietų.

Pastaba:

  • Turime atsisiųsti ir įdėti „MySQL“ jungtį į „Hadoop“ klasės kelią, kad gautume lenteles iš „MySQL“ lentelės. Norėdami tai padaryti, atsisiųskite jungtį com.mysql.jdbc_5.1.5.jar ir laikykite ją kataloge Hadoop_home / share / Hadoop / MaPreduce / lib.
cp atsisiuntimai / com.mysql.jdbc_5.1.5.jar $ HADOOP_HOME / share / hadoop / mapreduce / lib /
  • Be to, įdėkite visus „Hbase“ indelius į „Hadoop“ klasės kelią, kad jūsų MR programa pasiektų „Hbase“. Norėdami tai padaryti, vykdykite šią komandą :
cp $ HBASE_HOME / lib / * $ HADOOP_HOME / share / hadoop / mapreduce / lib /

Programinės įrangos versijos, kurias naudojau vykdant šią užduotį, yra šios:

  • „Hadooop-2.3.0“
  • HBase 0,98,9-Hadoop2
  • Užtemimo mėnulis

Kad išvengtumėte programos iškilus bet kokiai suderinamumo problemai, liepiu savo skaitytojams paleisti komandą panašioje aplinkoje.

Tinkintas „DBInputWritable“:

paketas com.inputFormat.copy importuoti java.io.DataInput importuoti java.io.DataOutput importuoti java.io.IOException importuoti java.sql.ResultSet importuoti java.sql.PreparedStatement importuoti java.sql.SQLException importuoti org.apache.hadoop.io .Writable import org.apache.hadoop.mapreduce.lib.db.DBWritable public class DBInputWritable implementates Writable, DBWritable {private int id private String name, dept public void readFields (DataInput in) throws IOException {} public void readFields (ResultSet rs) throws SQLException // Objektas „Rezultatų rinkinys“ nurodo duomenis, grąžintus iš SQL sakinio {id = rs.getInt (1) name = rs.getString (2) dept = rs.getString (3)} public void write (DataOutput out) throws IOException { } public void write (PreparedStatement ps) išmeta SQLException {ps.setInt (1, id) ps.setString (2, vardas) ps.setString (3, dept)} public int getId () {return id} public String getName () {return name} viešoji eilutė getDept () {return dept}}

Tinkintas DBOutputWritable:

paketas com.inputFormat.copy importuoti java.io.DataInput importuoti java.io.DataOutput importuoti java.io.IOException importuoti java.sql.ResultSet importuoti java.sql.PreparedStatement importuoti java.sql.SQLException importuoti org.apache.hadoop.io .Writable import org.apache.hadoop.mapreduce.lib.db.DBWritable public class DBOutputWritable implementates Writable, DBWritable {private String name private int id private String dept public DBOutputWritable (String name, int id, String dept) {this.name = pavadinimas this.id = id this.dept = dept} public void readFields (DataInput in) meta IOException {} public void readFields (ResultSet rs) meta SQLException {} public void write (DataOutput out) meta IOException {} public void write (PreparedStatement ps) meta SQLException {ps.setString (1, vardas) ps.setInt (2, id) ps.setString (3, dept)}}

Įvesties lentelė:

sukurti duomenų bazę edureka
sukurti lentelę emp (empid int not null, vardas varchar (30), dept varchar (20), pagrindinis raktas (empid))
įterpti į emp reikšmes (1, „abhay“, „plėtra“), (2, „brundesh“, „testas“)
pasirinkite * iš emp

1 atvejis: perkėlimas iš MySQL į HDFS

paketas com.inputFormat.copy importuoti java.net.URI importuoti org.apache.hadoop.conf.Konfigūracijos importas org.apache.hadoop.fs.FileSystem importuoti org.apache.hadoop.fs.Path import org.apache.hadoop.mapreduce .Darbo importas org.apache.hadoop.mapreduce.lib.db.DBConfiguration importuoti org.apache.hadoop.mapreduce.lib.db.DBInputFormat importuoti org.apache.hadoop.mapreduce.lib.output.FileOutputFormat importuoti org.apache.hadoop .io.Text importas org.apache.hadoop.io.IntWritable viešoji klasė MainDbtohdfs {public static void main (eilutė [] argumentai) išmeta išimtį {Configuration conf = new Configuration () DBConfiguration.configureDB (conf, 'com.mysql.jdbc .Driver ', // vairuotojo klasė' jdbc: mysql: // localhost: 3306 / edureka ', // db url' root ', // vartotojo vardas' root ') // slaptažodis Job job = new Job (conf) job .setJarByClass (MainDbtohdfs.class) job.setMapperClass (Map.class) job.setMapOutputKeyClass (Text.class) job.setMapOutputValueClass (IntWritable.class) job.setInputFormatClass (DBInputFormet.utormFutPathPathPath.utormath.clorm) FileOut naujas kelias (args [0])) DBInputFormat.setInput (darbas, DBInputWritable.class, 'emp', // įvesties lentelės pavadinimas null, null, nauja eilutė [] {'empid', 'name', 'dept'} / / lentelės stulpeliai) Kelias p = naujas kelias (args [0]) FileSystem fs = FileSystem.get (naujas URI (args [0]), conf) fs.delete (p) System.exit (job.waitForCompletion (true)? 0: 1)}}

Šis kodo fragmentas leidžia mums paruošti arba sukonfigūruoti įvesties formatą, kad galėtume pasiekti mūsų šaltinio SQL DB. Parametras apima tvarkyklės klasę, URL turi SQL duomenų bazės adresą, jo vartotojo vardą ir slaptažodį.

DBConfiguration.configureDB (conf, 'com.mysql.jdbc.Driver', // tvarkyklės klasė 'jdbc: mysql: // localhost: 3306 / edureka', // db url 'root', // vartotojo vardas 'root') //Slaptažodis

Šis kodo fragmentas leidžia mums perduoti duomenų lentelėje esančią lentelių informaciją ir nustatyti ją darbo objekte. Šie parametrai, žinoma, apima darbo egzempliorių, pasirinktinę įrašomąją klasę, kuri turi įdiegti DBWritable sąsają, šaltinio lentelės pavadinimą, sąlygą, jei dar yra nulinę, bet kokius rūšiavimo parametrus dar niekus, atitinkamai lentelės stulpelių sąrašą.

DBInputFormat.setInput (darbas, DBInputWritable.class, 'emp', // įvesties lentelės pavadinimas null, null, nauja eilutė [] {'empid', 'name', 'dept'} // lentelės stulpeliai)

Žemėlapių kūrėjas

paketas com.inputFormat.copy importuoti java.io.IOException importuoti org.apache.hadoop.mapreduce.Mapper importuoti org.apache.hadoop.io.LongWritable importuoti org.apache.hadoop.io.Text importuoti org.apache.hadoop.io .IntWritable visuomenės klasės žemėlapis praplečia Mapper {
apsaugotas negaliojantis žemėlapis („LongWritable“ raktas, „DBInputWritable“ reikšmė, „Context ctx“) {pabandykite {String name = value.getName () IntWritable id = new IntWritable (value.getId ()) String dept = value.getDept ()
ctx.write (naujas tekstas (vardas + '' + id + '' + dept), id)
} catch (IOException e) {e.printStackTrace ()} catch (InterruptedException e) {e.printStackTrace ()}}}

Reduktorius: naudojamas identifikacijos reduktorius

Komanda paleisti:

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

Išvestis: „MySQL“ lentelė perkelta į HDFS

hadoop dfs -ls / dbtohdfs / *

2 atvejis: perkėlimas iš vienos „MySQL“ lentelės į kitą „MySQL“

kuriant išvesties lentelę MySQL

sukurti lentelės darbuotoją1 (vardas varchar (20), id int, dept varchar (20))

paketas com.inputFormat.copy importuoti org.apache.hadoop.conf.Configuration importuoti org.apache.hadoop.mapreduce.Job importuoti org.apache.hadoop.mapreduce.lib.db.DBConfiguration importuoti org.apache.hadoop.mapreduce.lib .db.DBInputFormat importuoti org.apache.hadoop.mapreduce.lib.db.DBOutputFormat importuoti org.apache.hadoop.io.Text importuoti org.apache.hadoop.io.IntWritable import org.apache.hadoop.io.NullWritable public class „Mainonetable_to_other_table“ {public static void main (String [] args) meta išimtį {Configuration conf = new Configuration () DBConfiguration.configureDB (conf, 'com.mysql.jdbc.Driver', // driver class 'jdbc: mysql: // localhost : 3306 / edureka ', // db url' root ', // vartotojo vardas' root ') // slaptažodis 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 (job, DBInputWritable.class, 'emp', // įvesties lentelės pavadinimas null, null, nauja eilutė [] {'empid ',' vardas ',' dept '} // lentelės stulpeliai) DBOutputFormat.setOutput (job,' worker1 ', // output table name new String [] {' name ',' id ',' dept '} // lentelė stulpeliai) System.exit (job.waitForCompletion (true)? 0: 1)}}

Šis kodo fragmentas leidžia mums sukonfigūruoti išvesties lentelės pavadinimą SQL DB. Parametrai yra atitinkamai darbo egzempliorius, išvesties lentelės pavadinimas ir išvesties stulpelių pavadinimai.

DBOutputFormat.setOutput (darbas, 'darbuotojas1', // išvesties lentelės pavadinimas nauja eilutė [] {'vardas', 'id', 'skyrius'} // lentelės stulpeliai)

„Mapper“: tas pats kaip 1 atvejis

Reduktorius:

paketas com.inputFormat.copy importuoti java.io.IOException importuoti org.apache.hadoop.mapreduce.Reducer importuoti org.apache.hadoop.io.Text importuoti org.apache.hadoop.io.IntWritable import org.apache.hadoop.io .NullWritable public class Reduce pratęsia Reducer {apsaugotas void sumažinimas (teksto raktas, kartojamos reikšmės, kontekstas ctx) {int sum = 0 eilutės eilutė [] = key.toString (). Split ('') bandykite {ctx.write (naujas DBOutputWritable (eilutė [0] .toString (), Integer.parseInt (eilutė [1] .toString ()), eilutė [2] .toString ()), NullWritable.get ())} gaudyti (IOException e) {e.printStackTrace ()} pagauti („InterruptedException e“) {e.printStackTrace ()}}}

Komanda paleisti:

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

Rezultatas: perduoti duomenys iš „MySQL“ EMP lentelės kitam „MySQL“ lentelės darbuotojui1

3 atvejis: perkėlimas iš MySQL lentelės į NoSQL (Hbase) lentelę

„Hbase“ lentelės kūrimas, norint pritaikyti išvestį iš SQL lentelės:

sukurti „darbuotojas“, „oficialus_info“

Vairuotojo klasė:

paketas Dbtohbase importuoti org.apache.hadoop.conf.Configuration importuoti org.apache.hadoop.mapreduce.Job importuoti org.apache.hadoop.mapreduce.lib.db.DBConfiguration importuoti org.apache.hadoop.mapreduce.lib.db.DBInputFormat importuoti org.apache.hadoop.hbase.mapreduce.TableOutputFormat importuoti org.apache.hadoop.hbase.HBaseConfiguration importuoti org.apache.hadoop.hbase.client.HTable importuoti org.apache.hadoop.hbase.client.HTableInterface importuoti org.apache .hadoop.hbase.io.ImmutableBytesWritable import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil import org.apache.hadoop.io.Text public class MainDbToHbase {public static void main (String [] args) meta išimtį {Configuration conf = HBaseConfiguration.create () HTableInterface mytable = new HTable (conf, 'emp') DBConfiguration.configureDB (conf, 'com.mysql.jdbc.Driver', // driver class 'jdbc: mysql: // localhost: 3306 / edureka' , // db url 'root', // vartotojo vardas 'root') // slaptažodis 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 ( 'darbuotojas', Reduce.class, darbas) job.setInputFormatClass (DBInputFormat.class) job.setOutputFormatClass (TableOutputFormat. klasė) DBInputFormat.setInput (darbas, DBInputWritable.class, 'emp', // įvesties lentelės pavadinimas null, null, nauja eilutė [] {'empid', 'name', 'dept'} // lentelės stulpeliai) System.exit (job.waitForCompletion (tiesa)? 0: 1)}}

Šis kodo fragmentas leidžia jums sukonfigūruoti išvesties rakto klasę, kuri „hbase“ atveju yra „ImmutableBytesWritable“

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

Čia mes perduodame hbase lentelės pavadinimą ir reduktorių, kad veiktų ant stalo.

TableMapReduceUtil.initTableReducerJob („darbuotojas“, „Reduce.class“, darbas)

Žemėlapių kūrėjas:

paketas Dbtohbase importuoti java.io.IOException importuoti org.apache.hadoop.mapreduce.Mapper importuoti org.apache.hadoop.hbase.io.ImmutableBytesWritable importuoti org.apache.hadoop.hbase.util.Bytes importuoti org.apache.hadoop.io .LongWritable importuoti org.apache.hadoop.io.Text importuoti org.apache.hadoop.io.IntWritable viešosios klasės žemėlapį išplėsti Mapper {private IntWritable one = naujas IntWritable (1) apsaugotas negaliojantis žemėlapis (LongWritable id, DBInputWritable value, Context context) {pabandykite {String line = value.getName () String cd = value.getId () + '' String dept = value.getDept () context.write (new ImmutableBytesWritable (Bytes.toBytes (cd)), naujas tekstas (eilutė + ') '+ dept))} sugavimas (IOException e) {e.printStackTrace ()} catch (InterruptedException e) {e.printStackTrace ()}}}

Šiame kodo fragmente mes paimame reikšmes iš DBinputwritable klasės skaičiuoklių ir tada jas perduodame
„ImmutableBytesWritable“, kad jie pasiektų reduktorių baitų pavidalo forma, kurią supranta Hbase.

Eilučių eilutė = value.getName () String cd = value.getId () + '' String dept = value.getDept () context.write (new ImmutableBytesWritable (Bytes.toBytes (cd)), naujas tekstas (eilutė + '' + nuokrypta) ))

Reduktorius:

paketas Dbtohbase importuoti java.io.IOException importuoti org.apache.hadoop.hbase.client.Put importuoti org.apache.hadoop.hbase.io.ImmutableBytesWritable import org.apache.hadoop.hbase.mapreduce.TableReducer importuoti org.apache.hadoop .hbase.util.Bytes importuoja org.apache.hadoop.io.Text viešoji klasė Reduce pratęsia TableReducer {public void reduc (ImmutableBytesWritable key, Iterable values, Context context) meta IOException, InterruptedException {String [] priežastis = null // Kilpų reikšmės už (Tekstas val: reikšmės) {sukelti = val.toString (). split ('')} // Įdėti į HBase Įdėti put = naujas Įdėti (key.get ()) Put.add (Baitai.Baitai ('oficialus_info') ), Bytes.toBytes ('vardas'), Bytes.toBytes (sukelti [0])) įdėti.add (Bytes.toBytes ('oficialus_info'), Bytes.toBytes ('skyrius'), Bytes.toBytes (sukelti [1 ])) context.write (raktas, įdėjimas)}}

Šis kodo fragmentas leidžia mums nuspręsti tikslią eilutę ir stulpelį, kuriame saugotume vertes iš reduktoriaus. Čia kiekvieną „empid“ saugome atskiroje eilutėje, nes „empid“ padarėme kaip eilutės raktą, kuris būtų unikalus. Kiekvienoje eilutėje mes saugome oficialią darbuotojų informaciją skiltyje „oficialus_info“ pagal stulpelius „vardas“ ir „skyrius“.

Put put = new Put (key.get ()) put.add (Bytes.toBytes ('official_info'), Bytes.toBytes ('vardas'), Bytes.toBytes (sukelti [0])) put.add (Baitai. toBytes ('official_info'), Bytes.toBytes ('department'), Bytes.toBytes (sukelti [1])) context.write (raktas, įdėti)

Perkelti duomenys „Hbase“:

nuskaitymo darbuotojas

Kaip matome, sėkmingai atlikome verslo duomenų perkėlimą iš reliacinio SQL DB į NoSQL DB.

Kitame tinklaraštyje sužinosime, kaip rašyti ir vykdyti kitų įvesties ir išvesties formatų kodus.

Tęskite komentarus, klausimus ar bet kokius atsiliepimus. Norėčiau išgirsti iš jūsų.

kiek rezervuotų žodžių java

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime.

Susijusios žinutės: