spark sql可以与hbase交互,比如说通过jdbc,但是实际使用时,一般是利用phoenix操作hbase。此时,需要在项目中引入phoenix-core-4.10.0-HBase-1.2.jar和phoenix-spark-4.10.0-HBase-1.2.jar。

java代码示例:

    public static void main(String[] args) {
SparkSession spark = SparkSession.builder()
.appName("heihei")
.master("local[*]")
.getOrCreate();
Dataset<Row> df = spark.read().format("org.apache.phoenix.spark")
.option("zkUrl", "192.168.56.11:2181")
.option("table", "test1")
.load(); df = df.filter("name not like 'hig%'").filter("password like '%0%'"); df.write().format("org.apache.phoenix.spark")
.mode(SaveMode.Overwrite)
.option("zkUrl", "192.168.56.11:2181")
.option("table", "test2")
.save();
}

上例从hbase test1表中读取数据,把符合 where name not like 'hig%' and password like '%0%' 筛选条件的数据输出到hbase test2表中。以上写法不用担心内存溢出,程序会自动partition。

scala代码示例:

  def main(args: Array[String]): Unit = {
val spark = SparkSession.builder().master("local[*]").appName("phoenix-test").getOrCreate()
// 第一种读取方法
var df = spark.read.format("org.apache.phoenix.spark").option("table", "test1").option("zkUrl", "192.168.56.11:2181").load()
df = df.filter("name not like 'hig%'")
.filter("password like '%0%'")
df.show() val configuration = new Configuration()
configuration.set("hbase.zookeeper.quorum", "192.168.56.11:2181")
// 第二种读取方法
df = spark.sqlContext.phoenixTableAsDataFrame("test1", Array("ID", "INFO.NAME", "INFO.PASSWORD"), conf = configuration)
df.show() //第一种输出方法
df.write
.format("org.apache.phoenix.spark")
.mode("overwrite")
.option("table", "test2")
.option("zkUrl", "192.168.56.11:2181")
.save() //第二种输出方法
df.saveToPhoenix(Map("table" -> "test2", "zkUrl" -> "192.168.56.11:2181"))
}

phoenixTableAsDataFrame()是org.apache.phoenix.spark.SparkSqlContextFunctions中的方法,saveToPhoenix()是org.apache.phoenix.spark.DataFrameFunctions中的方法,在phoenix-spark-4.10.0-HBase-1.2.jar中。使用这两个方法时必须 import org.apache.phoenix.spark._,否则编辑器识别不出语法,也不会自动import。

最新文章

  1. Sublime Text 3 个人开发习惯
  2. CVE: 2014-6271、CVE: 2014-7169 Bash Specially-crafted Environment Variables Code Injection Vulnerability Analysis
  3. RequestContextListener有什么用
  4. 一、Linux目录结构
  5. 学习c的第8天
  6. 【英语】Bingo口语笔记(66) - 美式发音特点
  7. Generic repository pattern and Unit of work with Entity framework
  8. 增强for循环赋值
  9. 【WEB API项目实战干货系列】- API访问客户端(WebApiClient适用于MVC/WebForms/WinForm)(四)
  10. 2017年第六届数学中国数学建模国际赛(小美赛)C题解题思路
  11. PHP入门学习精要
  12. 在 root 下执行 Oracle 程序时找不到 libclntsh.so.11.1 错误的解决办法。
  13. 长沙学院APP
  14. java算法----排序----(7)堆排序
  15. distributed computing_the World Wide Web
  16. React Native中的约束规范
  17. keycode值对照表
  18. hdu 6315 Naive Operations (2018 Multi-University Training Contest 2 1007)
  19. javascript的特殊条件语句
  20. (转)代号为Purley的新一代服务器平台

热门文章

  1. maven环境快速搭建(转)
  2. mybatis 输入、输出映射
  3. javascript事件坐标
  4. Python 抓取html所有特定元素的方法
  5. CodeForces 146E Lucky Subsequence(组合数+DP)
  6. Centos iptables防火墙设置
  7. 升级实体框架EntityFramework6.0
  8. 获取服务端https证书
  9. MVC断点续传
  10. GridView中文属性