העברה מגרסאות קודמות של HBase

הלקוח Cloud Bigtable HBase ל-Java מיועד לגרסאות 1.x ו-2.x של Apache HBase API. גרסה 1.0 של ה-API כללה כמה שינויים משמעותיים מגרסאות קודמות של HBase. אם אתם מבצעים מיגרציה ל-Bigtable מ-HBase, והאפליקציה שלכם מטרגטת גרסה ישנה יותר של HBase API, תצטרכו לעדכן את האפליקציה כדי שתהיה תואמת ל-Bigtable.

כדי לעזור לכם בתהליך ההעברה, בדף הזה מפורטים השינויים הבולטים ביותר ב-HBase 1.0 API.

ממשק החיבור

ב-HBase 1.0 ואילך, במקום להסתמך על הממשק HConnection שהוצא משימוש, צריך להשתמש ב-org.apache.hadoop.hbase.client.ConnectionFactory. המחלקה הזו יוצרת אובייקטים שמטמיעים את הממשק החדש Connection. ‫ConnectionFactory מחליף את המחלקות ConnectionManager ו-HConnectionManager שהוצאו משימוש.

יצירת אובייקט Connection היא פעולה יקרה יחסית. מומלץ ליצור אובייקט Connection אחד לכל תהליך ולשתף את האובייקט לפי הצורך. אובייקטים של Connection הם בטוחים לשימוש בשרשור.

בנוסף, חשוב לסגור את החיבור כשמסיימים להשתמש בו. ב-HBase 1.0 ואילך, האפליקציה אחראית לניהול מחזור החיים של החיבור.

הקוד המעודכן אמור להיראות כמו בדוגמה הבאה:

Connection connection = ConnectionFactory.createConnection(config);
// ...
connection.close();

הסיווג TableName

בגרסאות קודמות של HBase, כשמבצעים מניפולציה בטבלה, אפשר לציין את שם הטבלה כערך String או byte[]. ב-HBase 1.0 ואילך, צריך לציין את שם הטבלה על ידי יצירת מופע של org.apache.hadoop.hbase.TableName:

String tableName = "MyTable";
    // or byte[] tableName = Bytes.toBytes("MyTable");
TableName tableNameObj = TableName.valueOf(tableName);

ממשקי Table,‏ BufferedMutator ו-RegionLocator

ב-HBase 1.0, המחלקה HTable מוחלפת בממשקים הבאים:

משתמשים באובייקט Connection כדי לקבל מופע של הממשקים האלה:

Table table = connection.getTable(tableNameObj);
BufferedMutator mutator = connection.getBufferedMutator(tableNameObj);
RegionLocator regionLocator = connection.getRegionLocator(tableNameObj);

המופעים של Table, BufferedMutator וגם RegionLocator לא בטוחים לשימוש עם threads. עם זאת, אלה אובייקטים קלי משקל, כך שאפשר ליצור אותם לפי הצורך בהקשר של שרשור יחיד.

ממשק האדמין

ב-HBase 1.0, המחלקה HBaseAdmin מוחלפת בממשק org.apache.hadoop.hbase.client.Admin. מכיוון ש-Bigtable מטפל במשימות תחזוקה באופן אוטומטי, אין תמיכה בהרבה מהשיטות בממשק Admin. פרטים נוספים מופיעים במאמר ההבדלים בין ממשקי ה-API של HBase ו-Bigtable.

משתמשים באובייקט Connection כדי לקבל מופע של הממשק Admin:

Admin admin = connection.getAdmin();