import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.io.ImmutableBytesWritable
import org.apache.hadoop.hbase.mapred.TableOutputFormat
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.hadoop.hbase.client.{Put, Result}
import org.apache.hadoop.hbase.util.Bytes
import org.apache.hadoop.mapred.JobConf object 写Hbase数据 {
def main(args: Array[String]): Unit = {
val sparkConf=new SparkConf().setAppName("往Hbase中写数据").setMaster("local[2]")
val sc=new SparkContext(sparkConf)
val tableName="student"
// sc.hadoopConfiguration.set(TableOutputFormat.OUTPUT_TABLE,tableName) val conf=HBaseConfiguration.create() val jobConf=new JobConf(conf)
jobConf.setOutputFormat(classOf[TableOutputFormat])
jobConf.set(TableOutputFormat.OUTPUT_TABLE,tableName)
//构建新纪录
val dataRDD=sc.makeRDD(Array("5,hadoop,B,29","6,spark,G,56"))
val rdd=dataRDD.map(_.split(",")).map{x=>{
val put=new Put(Bytes.toBytes(x())) //行健的值 Put.add方法接收三个参数:列族,列名,数据
put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes(x())) //info:name列的值
put.addColumn(Bytes.toBytes("info"),Bytes.toBytes("gender"),Bytes.toBytes(x())) //info:gender列的值
put.addColumn(Bytes.toBytes("info"),Bytes.toBytes("age"),Bytes.toBytes(x()))//info:age列的值
(new ImmutableBytesWritable,put) ////转化成RDD[(ImmutableBytesWritable,Put)]类型才能调用saveAsHadoopDataset
}}
rdd.saveAsHadoopDataset(jobConf)
}
}

结果:

hbase(main)::> scan 'student'
ROW COLUMN+CELL
column=info:age, timestamp=, value=
column=info:gender, timestamp=, value=B
column=info:name, timestamp=, value=hadoop
column=info:age, timestamp=, value=
column=info:gender, timestamp=, value=G
column=info:name, timestamp=, value=spark
column=info:age, timestamp=, value=
column=info:gender, timestamp=, value=B
column=info:name, timestamp=, value=hadoop
column=info:age, timestamp=, value=
column=info:gender, timestamp=, value=G
column=info:name, timestamp=, value=spark

最新文章

  1. 【原创】JMeter学习(三十七)Jmeter录制手机app脚本
  2. 《UML大战需求分析》阅读笔记4
  3. LESS介绍及其与Sass的差异
  4. (String)151. Reverse Words in a String
  5. xcode5 和code6中push后方法执行的先后问题
  6. 远程连接Windows2008R2时服务器报Terminal Services错误的解决办法
  7. 自己写了一个类似百度空间自动保存草稿的程序 php+jquery
  8. ARM指令系统
  9. 谷歌浏览器-如何让Chrome默认以隐身模式启动?
  10. 为什么样本方差(sample variance)的分母是 n-1?
  11. Varnish缓存服务
  12. IWorkspaceFactory接口
  13. python 数据驱动(ddt)
  14. MongoDB官网配置项目整理
  15. python笔记3——字符串的操作
  16. [InstFiles]在Inno中打包隐藏和系统文件的头文件
  17. 20190319xlVBA_根据考勤数据统计缺勤缺考数据
  18. 为什么会出现container、injection技术?发展历史及未来发展趋势
  19. 竖直的ViewPager,上下滑动的ViewPager,VerticalViewPager ;
  20. SharePoint 2010 使用沙盒解决方案隐藏页面中的”元素”

热门文章

  1. fielddata breaker与cache size
  2. 使用HTML,CSS快速导出数据到Excel
  3. 关于SELECT 逻辑的执行顺序问题
  4. ProxySQL Tutorial : setup in a MySQL replication topology
  5. WebLoad 解析服务器返回的XML格式内容
  6. bzoj 1005 [HNOI2008] 明明的烦恼 (prufer编码)
  7. 【SGU194&ZOJ2314】Reactor Cooling(有上下界的网络流)
  8. 洛谷——P3379 【模板】最近公共祖先(LCA)
  9. operamasks-omGrid的使用
  10. MongoDB小结07 - update【$addToSet & $each】