M.soheil
شنبه 01 اسفند 1394, 17:47 عصر
سلام
من قصد دارم با پایگاه داده HBase روی Hadoop یک مثال حل کنم به این صورت که دادهها رو از کاربر میگیره و داخل پایگاه داده Insert میکنه. (مشخصا دفترچه تلفن هست). برای وارد کردن دادهها باید یک آبجکت از نوع Put بسازم به این صورت:
Put p = new Put(Bytes.toBytes("row1"));
که نام سطر هم باید به عنوان ورودی داده بشه (در اینجا row1 داده شده). مشکل اینجاست که این نام سطر باید برای همه فیلدها یکتا باشه و من باید برای هر وارد کردن داده جدید کد رو دستکاری کنم و نام جدیدی بهش بدم که این کار اصولی نیست. حالا میخوام بدونم چطور میتونم این نام سطر رو به صورت اتوماتیک و خودکار generate کنم که نیاز نباشه هر بار کد رو تغییر بدم.
اگر هم فیلیدی با این نام در پایگاه داده وجود داشته باشه، داده جدید رو روی اون رونویسی میکنه.
کد کامل برنامه به صورت زیر هست:
String fName, lName, number ;
Scanner in = new Scanner (System.in) ;
System.out.println("Wainting for taking new phone number info ...\n");
System.out.println("Please Enter first name : ");
fName = in.nextLine() ;
System.out.println("Please Enter last name : ");
lName = in.nextLine() ;
System.out.println("Please Enter number : ");
number = in.nextLine() ;
Configuration config = HBaseConfiguration.create();
HTable hTable = new HTable(config, "phoneList");
Put p = new Put(Bytes.toBytes("row1"));
p.add(Bytes.toBytes("personal"), Bytes.toBytes("firstName")
,Bytes.toBytes(fName));
p.add(Bytes.toBytes("personal"), Bytes.toBytes("lastName")
,Bytes.toBytes(lName));
p.add(Bytes.toBytes("phone"), Bytes.toBytes("number")
,Bytes.toBytes(number));
hTable.put(p);
hTable.close();
in.close();
امیدوارم که منظورمو درست رسونده باشم. اگر جایی گنگ بود بفرمایید بیشتر توضیح بدم.
تشکر
من قصد دارم با پایگاه داده HBase روی Hadoop یک مثال حل کنم به این صورت که دادهها رو از کاربر میگیره و داخل پایگاه داده Insert میکنه. (مشخصا دفترچه تلفن هست). برای وارد کردن دادهها باید یک آبجکت از نوع Put بسازم به این صورت:
Put p = new Put(Bytes.toBytes("row1"));
که نام سطر هم باید به عنوان ورودی داده بشه (در اینجا row1 داده شده). مشکل اینجاست که این نام سطر باید برای همه فیلدها یکتا باشه و من باید برای هر وارد کردن داده جدید کد رو دستکاری کنم و نام جدیدی بهش بدم که این کار اصولی نیست. حالا میخوام بدونم چطور میتونم این نام سطر رو به صورت اتوماتیک و خودکار generate کنم که نیاز نباشه هر بار کد رو تغییر بدم.
اگر هم فیلیدی با این نام در پایگاه داده وجود داشته باشه، داده جدید رو روی اون رونویسی میکنه.
کد کامل برنامه به صورت زیر هست:
String fName, lName, number ;
Scanner in = new Scanner (System.in) ;
System.out.println("Wainting for taking new phone number info ...\n");
System.out.println("Please Enter first name : ");
fName = in.nextLine() ;
System.out.println("Please Enter last name : ");
lName = in.nextLine() ;
System.out.println("Please Enter number : ");
number = in.nextLine() ;
Configuration config = HBaseConfiguration.create();
HTable hTable = new HTable(config, "phoneList");
Put p = new Put(Bytes.toBytes("row1"));
p.add(Bytes.toBytes("personal"), Bytes.toBytes("firstName")
,Bytes.toBytes(fName));
p.add(Bytes.toBytes("personal"), Bytes.toBytes("lastName")
,Bytes.toBytes(lName));
p.add(Bytes.toBytes("phone"), Bytes.toBytes("number")
,Bytes.toBytes(number));
hTable.put(p);
hTable.close();
in.close();
امیدوارم که منظورمو درست رسونده باشم. اگر جایی گنگ بود بفرمایید بیشتر توضیح بدم.
تشکر