IDEA中,使用spark操作Phoenix中的数据,scala语言编写。

首先附上pom.xml

1.pom.xml

<dependencies>

        <dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.3.0</version>
</dependency> <dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.3.0</version>
</dependency> <dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming_2.11</artifactId>
<version>2.3.0</version>
</dependency> <dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-streaming-kafka-0-8_2.11</artifactId>
<version>2.3.0</version>
</dependency> <dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-spark</artifactId>
<version>4.13.1-HBase-1.3</version>
</dependency> <dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency> <dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
</dependencies>

2.配置文件

2.1config.properties

#测试
brokerList=slave1:9092,slave2:9092,slave3:9092
zkUrl=slave1,slave2,slave3:2181
phoenixUrl=jdbc:phoenix:slave1,slave2,slave3:2181/hbase

2.2MyConfig

import java.util.Properties;
public class MyConfig {
private static Properties properties = new Properties();
static {
try {
properties.load(MyConfig.class.getResourceAsStream("config.properties"));
} catch (Exception e) {
throw new RuntimeException("配置文件加载出错");
}
}
public static String getString(String propertyName) {
return properties.getProperty(propertyName);
}
}

3.entity实体(与phoenix中的table互相对应)

entity表示的实体,必须与Phoenix的table中的字段名称保持一致。

case class data(vehicleColor: String, vehicleNo: String) extends Serializable {}

4.Util

import org.I0Itec.zkclient.serialize.ZkSerializer
import org.apache.commons.io.Charsets
class MyZkSerializer extends ZkSerializer{ import org.I0Itec.zkclient.exception.ZkMarshallingError
@throws[ZkMarshallingError]
def deserialize(bytes: Array[Byte]) = new String(bytes, Charsets.UTF_8) @throws[ZkMarshallingError]
def serialize(obj: Any): Array[Byte] = String.valueOf(obj).getBytes(Charsets.UTF_8)
}

5.scala,客户端查询Phoenix中的数据

5.1 method1

import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext} object SparkOperationPhoenix { def main(args: Array[String]): Unit = { val jdbcPhoenixUrl = "jdbc:phoenix:slave1,slave2,slave3:2181/hbase"
val tableName = "LKYW_GPS_DATA" val conf = new SparkConf().setAppName("SparkOperationPhoenix").setMaster("local")
val sc = new SparkContext(conf)
val sqlContext = new SQLContext(sc) val df = sqlContext.load("org.apache.phoenix.spark", Map("table" -> tableName, "zkUrl" -> jdbcPhoenixUrl))
df.show() sc.stop()
}
}

5.2 method2

import java.sql.{Connection, DriverManager, ResultSet, Statement}

object QueryLkywPhoenixData {

  def main(args: Array[String]) {
var cc: Connection = null
val driver: String = "org.apache.phoenix.jdbc.PhoenixDriver"
val url: String = "jdbc:phoenix:slave1,slave2,slave3:2181/hbase"
Class.forName(driver)
cc = DriverManager.getConnection(url)
val conn: Connection = DriverManager.getConnection(url)
val statement: Statement = conn.createStatement
val sql: String = "select * from LKYW_GPS_DATA order by date desc limit 10"
val rs: ResultSet = statement.executeQuery(sql)
while (rs.next) {
val vehicleNo: String = rs.getString("vehicleNo")
val date: String = rs.getString("date")
println("vehicleNo:" + vehicleNo + " date:" + date)
}
}
}

客户端,Scala:Spark查询Phoenix的更多相关文章

  1. 大数据技术之_27_电商平台数据分析项目_02_预备知识 + Scala + Spark Core + Spark SQL + Spark Streaming + Java 对象池

    第0章 预备知识0.1 Scala0.1.1 Scala 操作符0.1.2 拉链操作0.2 Spark Core0.2.1 Spark RDD 持久化0.2.2 Spark 共享变量0.3 Spark ...

  2. 毕设三: spark与phoenix集成插入数据/解析json数组

    需求:将前些日子采集的评论存储到hbase中 思路: 先用fastjson解析评论,然后构造rdd,最后使用spark与phoenix交互,把数据存储到hbase中 部分数据: [ { "r ...

  3. spark整合Phoenix相关案例

    spark 读取Phoenix hbase table表到 DataFrame的方式 Demo1: 方式一:spark read读取各数据库的通用方式 方式二:spark.load 方式三:phoen ...

  4. Dynamic CRM 2013学习笔记(十)客户端几种查询数据方式比较

    我们经常要在客户端进行数据查询,下面分别比较常用的几种查询方式:XMLHttpRequest, SDK.JQuery, SDK.Rest. XMLHttpRequest是最基本的调用方式,JQuery ...

  5. Eclipse+maven+scala+spark环境搭建

    准备条件 我用的Eclipse版本 Eclipse Java EE IDE for Web Developers. Version: Luna Release (4.4.0) 我用的是Eclipse ...

  6. brdd 惰性执行 mapreduce 提取指定类型值 WebUi 作业信息 全局临时视图 pyspark scala spark 安装

    [rdd 惰性执行] 为了提高计算效率 spark 采用了哪些机制 1-rdd 基于分布式内存数据集进行运算 2-lazy evaluation  :惰性执行,即rdd的变换操作并不是在运行该代码时立 ...

  7. 在IntelliJ IDEA中创建和运行java/scala/spark程序

    本文将分两部分来介绍如何在IntelliJ IDEA中运行Java/Scala/Spark程序: 基本概念介绍 在IntelliJ IDEA中创建和运行java/scala/spark程序 基本概念介 ...

  8. 用Spark查询HBase中的表数据

    java代码如下: package db.query; import org.apache.commons.logging.Log; import org.apache.commons.logging ...

  9. eclipse构建maven+scala+spark工程 转载

    转载地址:http://jingpin.jikexueyuan.com/article/47043.html 本文先叙述如何配置eclipse中maven+scala的开发环境,之后,叙述如何实现sp ...

随机推荐

  1. cmake的安装

    安装cmake有2种方式 安装方式1:源码安装 1.下载cmake源码包(https://cmake.org/download/),解压后进入解压目录 2.执行安装配置命令:配置软件二进制安装到/us ...

  2. uni-app 顶部tabbar切换

    完成样式 项目地址:https://gitee.com/jielov/uni-app-tabbar 顶部tabbar代码 <!--顶部导航栏--> <view class=" ...

  3. flask socketio 踩坑记录

    在使用python3的flask-socketio+socket.io.js的时候报错 在使用python3的flask-socketio+socket.io.js的时候报错"unsuppo ...

  4. 【Flutter】可滚动组件之ListView

    前言 它可以沿一个方向线性排布所有子组件,并且它也可以支持基于Sliver的延迟构建模型. 接口描述 ListView({ Key key, // 可滚动widget公共参数 Axis scrollD ...

  5. 检查Mysql主从状态

    .检查MySQL主从同步状态 #!/bin/bash USER=bak PASSWD=123456 IO_SQL_STATUS=$(mysql -u$USER -p$PASSWD -e  show s ...

  6. LuoguP5488 差分与前缀和

    题意 给定一个长为\(n\)的序列\(a\),求出其\(k\)阶差分或前缀和.结果的每一项都需要对\(1004535809\)取模. 打表找规律 先看前缀和,设\(n=5\),\(k=4\),按照阶从 ...

  7. .NET 项目中的单元测试

    .NET 项目中的单元测试 Intro "不会写单元测试的程序员不是合格的程序员,不写单元测试的程序员不是优秀的工程师." -- 一只想要成为一个优秀程序员的渣逼程序猿. 那么问题 ...

  8. .NET Core使用Source Link提高源代码调试体验和生产效率

    前言: 在我们日常开发过程中常常会使用到很多其他封装好的第三方中间件(NuGet依赖项).类库或者是.NET框架中自带的库.但是当你想要对这些类库的方法设置断点调试,然后发现无法F11(逐语句)调试进 ...

  9. 微信小程序代码上传,审核发布小程序

    1.打开微信开发者工具 管理员扫码 -> 填写好小程序的项目目录.AppID(必须是客户已注册好的AppID).项目名称 2.在app.js中修改id(客户登录后台管理系统的id),app.js ...

  10. Python+Selenium+Unittest实现PO模式web自动化框架(5)

    1.PageObjects目录下的模块 该目录下是存放各页面功能点. 比如:login_page.py模块下就是存放登录页面上的各个功能点的.(登录功能.获取登录失败的提示信息) # --^_^-- ...