spark与hbase进行交互
来源:互联网 发布:淘宝网申请账号 编辑:程序博客网 时间:2024/05/18 00:56
软件环境:
spark-1.2.1
hadoop-2.5.2
hbase-1.0.0
1. 搭好上述开发环境
2. 在IntelliJ IDEA中创建scala项目,从hbase-1.0.0/lib/目录中导入如下包:hbase-client-1.0.0.jar, hbase-common-1.0.0.jar, hbase-server-1.0.0.jar, hbase-protocol-1.0.0.jar, guava-12.0.1.jar, htrace-core-3.1.0-incubating.jar
(注:hbase-*的jar包是编写程序所需要;guava包如果不导入,运行时会出现找不到com/google/common/collect/ListMultimap的错误;htrace包如果不导入,运行时会出现找不到org/apache/htrace/Trace的错误)
3. 编写程序
/** * Created by tifctu on 3/3/15. */package com.founder.big.sparkimport org.apache.hadoop.hbase.io.ImmutableBytesWritableimport org.apache.hadoop.hbase.protobuf.ProtobufUtilimport org.apache.spark._import org.apache.spark.rdd._import org.apache.spark.sql._import org.apache.hadoop.hbase.{HBaseConfiguration, HTableDescriptor}import org.apache.hadoop.hbase.client.{Put, HBaseAdmin, Scan, Result}import org.apache.hadoop.hbase.mapreduce.TableInputFormatimport org.apache.hadoop.hbase.protobuf.ProtobufUtilimport org.apache.hadoop.hbase.protobuf.generated.ClientProtosimport org.apache.hadoop.hbase.util.Bytesimport org.apache.hadoop.hbase.util.Base64class HBaseConnector(sc: SparkContext, table: String) extends Serializable { val sqlContext = new SQLContext(sc) val conf = HBaseConfiguration.create() conf.set("hbase.master", "cloud00:16030") conf.addResource("/cloud/hbase-1.0.0/conf/hbase-site.xml") conf.set(TableInputFormat.INPUT_TABLE, table) //val scan = new Scan() //scan.setStartRow(Bytes.toBytes("1988")) //scan.setStopRow(Bytes.toBytes("2015")) //scan.addFamily(Bytes.toBytes("cf")) //scan.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("did")) //val proto = ProtobufUtil.toScan(scan) //val scanToString = Base64.encodeBytes(proto.toByteArray) //conf.set(TableInputFormat.SCAN, scanToString) val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat], classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable], classOf[org.apache.hadoop.hbase.client.Result]) println(hBaseRDD.count()) /* val rowkey = "tifctu" val put: Put = new Put(rowkey) put.add(Bytes.toBytes("cf"), Bytes.toBytes("did"), Bytes.toBytes("cf"), Bytes.toBytes("value")) conf.write(new ImmutableBytesWritable(rowkey), put) */}object HBaseConnector { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("HBaseTest") conf.setMaster("spark://cloud06:7077") val sc = new SparkContext(conf) new HBaseConnector(sc, "mytable") }}
4. 创建应用jar包,在IntelliJ IDEA的Build -> Build Artifacts -> Edit中,将上述所导入的jar包以Extracted Directory的方式添加到Output Layout中,将源程序及第三方jar包一起打包。
如果不将第三方jar包打到应用中,可以在spark-submit运行应用时以 --jars 的方式导入,格式如下:--jars ./lib/hbase-client-1.0.0.jar,./lib/hbase-common-1.0.0.jar,./lib/hbase-server-1.0.0.jar,./lib/hbase-protocol-1.0.0.jar,./lib/guava-12.0.1.jar,./lib/htrace-core-3.1.0-incubating.jar
0 0
- spark与hbase进行交互
- java与hbase交互
- 通过HBase Shell与HBase交互
- java api与hbase交互
- Spark与HBase的整合
- 与插件进行交互
- spark与磁盘交互,spark读hdfs
- 使用spark与ElasticSearch交互
- Spark与Hive的交互
- Spark与Mysql的交互
- 通过Java Api与HBase交互
- 通过Java Api与HBase交互(转)
- 通过Java Api与HBase交互
- 通过Java Api与HBase交互(转)
- 通过Java Api与HBase交互(转)
- Java API 与HBase交互实例
- Java API 与HBase交互实例
- :通过Java Api与HBase交互(转)
- 求两个正整数的正差值
- win7下配置jdk7环境变量
- Dynamic Web Module 3.0 requires Java 1.6 or newer.
- 主分区、逻辑分区、拓展分区
- Error starting static Resources ......
- spark与hbase进行交互
- 《多线程编程中的原子操作》读后小结
- V7下的ActionBar
- qt5(cmake): asked CMake to find a package configuration file provided by "Qt5Widgets"
- JBoss的介绍和部署(具体部署百度一下,主要有集成myeclipse和eclipse)
- java 学习笔记 核心技术I
- 安卓第八记——GridView的使用
- 创建空白ShapeFile文件
- webview 和android js 交互