-
-
Save ALubrano77/60dd48d7afdcf5973d364f24dc3aea2a to your computer and use it in GitHub Desktop.
A hello world example about connecting Scala to HBase
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name := "ScalaHBase" | |
version := "1.0" | |
scalaVersion := "2.11.8" | |
resolvers ++= Seq( | |
"Hadoop Releases" at "https://repository.cloudera.com/content/repositories/releases/" | |
) | |
libraryDependencies ++= Seq( | |
"com.google.guava" % "guava" % "15.0", | |
"org.apache.hadoop" % "hadoop-common" % "2.6.0", | |
"org.apache.hadoop" % "hadoop-mapred" % "0.22.0", | |
"org.apache.hbase" % "hbase-common" % "1.0.0", | |
"org.apache.hbase" % "hbase-client" % "1.0.0" | |
) | |
dependencyOverrides += "com.google.guava" % "guava" % "15.0" | |
assemblyMergeStrategy in assembly := { | |
case PathList("javax", "servlet", xs @ _*) => MergeStrategy.last | |
case PathList("javax", "activation", xs @ _*) => MergeStrategy.last | |
case PathList("org", "apache", xs @ _*) => MergeStrategy.last | |
case PathList("com", "google", xs @ _*) => MergeStrategy.first | |
case PathList("com", "yammer", xs @ _*) => MergeStrategy.last | |
case "about.html" => MergeStrategy.rename | |
case "plugin.properties" => MergeStrategy.last | |
case "log4j.properties" => MergeStrategy.last | |
case x => | |
val oldStrategy = (assemblyMergeStrategy in assembly).value | |
oldStrategy(x) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//CHECK ishassan/build.sbt as well | |
import org.apache.hadoop.hbase.client._ | |
import org.apache.hadoop.hbase.util.Bytes | |
import org.apache.hadoop.hbase.{CellUtil, HBaseConfiguration, TableName} | |
import org.apache.hadoop.conf.Configuration | |
import scala.collection.JavaConverters._ | |
object ScalaHBaseExample extends App{ | |
def printRow(result : Result) = { | |
val cells = result.rawCells(); | |
print( Bytes.toString(result.getRow) + " : " ) | |
for(cell <- cells){ | |
val col_name = Bytes.toString(CellUtil.cloneQualifier(cell)) | |
val col_value = Bytes.toString(CellUtil.cloneValue(cell)) | |
print("(%s,%s) ".format(col_name, col_value)) | |
} | |
println() | |
} | |
val conf : Configuration = HBaseConfiguration.create() | |
/* | |
From http://hbase.apache.org/0.94/book/zookeeper.html | |
A distributed Apache HBase (TM) installation depends on a running ZooKeeper cluster. All participating nodes and clients | |
need to be able to access the running ZooKeeper ensemble. Apache HBase by default manages a ZooKeeper "cluster" for you. | |
It will start and stop the ZooKeeper ensemble as part of the HBase start/stop process. You can also manage the ZooKeeper | |
ensemble independent of HBase and just point HBase at the cluster it should use. To toggle HBase management of ZooKeeper, | |
use the HBASE_MANAGES_ZK variable in conf/hbase-env.sh. This variable, which defaults to true, tells HBase whether to | |
start/stop the ZooKeeper ensemble servers as part of HBase start/stop. | |
*/ | |
val ZOOKEEPER_QUORUM = "WRITE THE ZOOKEEPER CLUSTER THAT HBASE SHOULD USE" | |
conf.set("hbase.zookeeper.quorum", ZOOKEEPER_QUORUM); | |
val connection = ConnectionFactory.createConnection(conf) | |
val table = connection.getTable(TableName.valueOf( Bytes.toBytes("emostafa:test_table") ) ) | |
// Put example | |
var put = new Put(Bytes.toBytes("row1")) | |
put.addColumn(Bytes.toBytes("d"), Bytes.toBytes("test_column_name"), Bytes.toBytes("test_value")) | |
put.addColumn(Bytes.toBytes("d"), Bytes.toBytes("test_column_name2"), Bytes.toBytes("test_value2")) | |
table.put(put) | |
// Get example | |
println("Get Example:") | |
var get = new Get(Bytes.toBytes("row1")) | |
var result = table.get(get) | |
printRow(result) | |
//Scan example | |
println("\nScan Example:") | |
var scan = table.getScanner(new Scan()) | |
scan.asScala.foreach(result => { | |
printRow(result) | |
}) | |
table.close() | |
connection.close() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment