Phoenix使用指南

phoenix的安装与使用(Hbase的客户端) 一、phoenix的简介与特点 1.1 简介 2.1 特点 phoenix虽然是构建在hbase层之上,但是由于以下特点,不会影响查询性能,反而会提高性能 phoenix还提供了一些增强优化性能 phoenix不能做的事情 二、phoenix安装 2.1 环境需求: 2.2 搭建步骤 1)上传,解压,更名,配置环境变量,生效,验证 2)拷贝phoenix的两个jar包(core和client)到hbase的所有服务端的相关目录下(hbase的lib目录) 3)配置三台hbase的hbase-site. 阅读详情

Phoenix

Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询,如果可以像操作mysql等一样通过sql实现对Hbase的操作,那么很大程度降低了Hbase的使用成本。Apache Phoenix 组件就完成了这种需求,官方注解为 “Phoenix -we put the SQL back in NoSql”,通过官方说明,Phoenix 的性能很高,相对于 hbase 原生的scan 并不会差多少,而对于类似的组件 hive、Impala等,性能有着显著的提升,详细请阅读https://phoenix.apache.org/performance.html。

Apache Phoenix 官方站点:https://phoenix.apache.org/
Phoenix支持的sql语句: https://phoenix.apache.org/language/index.html

Phoenix 支持的DataTypes:https://phoenix.apache.org/language/datatypes.html
Phoenix 支持的函数:https://phoenix.apache.org/language/functions.html

Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫描,并编排执行以生成标准的JDBC结果集,

Download:http://phoenix.apache.org/download.html

安装

下载hbase对应版本的phoenix;解压bin.tar.gz包,拷贝phoenix server jar包到hbase集群的每个region server 的lib目录下,然后重启hbase 集群

wget http://mirrors.hust.edu.cn/apache/phoenix/apache-phoenix-4.14.1-HBase-1.4/bin/apache-phoenix-4.14.1-HBase-1.4-bin.tar.gz
 
tar -zxvf apache-phoenix-4.14.1-HBase-1.4-bin.tar.gz
mv apache-phoenix-4.14.1-HBase-1.4-bin/ phoenix-1.4

拷贝phoenix-core-4.14.1-HBase-1.4.jar到RegionServer,如果有其他节点则把master和slave都需要拷
phoenix-4.14.1-HBase-1.4-server.jar 和 phoenix-core-4.14.1-HBase-1.4.jar

cd phoenix-HBase-1.4
cp phoenix-core-4.14.1-HBase-1.4.jar hbase-1.4.9/lib
cp phoenix-4.14.1-HBase-1.4-client.jar /mnt/hbase-1.4.9/lib

# 拷贝到其他节点
$scp -r phoenix-core-4.14.1-HBase-1.4.jar  hadoop@172.18.68.88:/home/hbase-1.4.9/lib 拷贝到slave01
scp -r phoenix-4.14.1-HBase-1.4-client.jar  hadoop@172.18.68.88:/home/hbase-1.4.9/lib 拷贝到slave01

2.3.3 重启hbase

$cd /mnt/hbase-1.4.9/bin

$./stop-hbase.sh

$./start-hbase.sh
#phoenix
export PHOENIX_HOME=/home/hadoop/app/phoenix
export PHOENIX_CLASSPATH=$PHOENIX_HOME
export PATH=$PATH:$PHOENIX_HOME/bin

source /etc/profile

执行sql测试

./sqlline.py localhost:2181
Setting property: [incremental, false]
Setting property: [isolation, TRANSACTION_READ_COMMITTED]
issuing: !connect jdbc:phoenix:localhost:2181 none none org.apache.phoenix.jdbc.PhoenixDriver
Connecting to jdbc:phoenix:localhost:2181
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/mnt/phoenix-HBase-1.4/phoenix-4.14.1-HBase-1.4-client.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/mnt/hadoop-2.7.5/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
19/01/07 04:07:30 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Connected to: Phoenix (version 4.14)
Driver: PhoenixEmbeddedDriver (version 4.14)
Autocommit status: true
Transaction isolation: TRANSACTION_READ_COMMITTED
Building list of tables and columns for tab-completion (set fastconnect to true to skip)...
133/133 (100%) Done
Done
sqlline version 1.2.0
0: jdbc:phoenix:localhost:2181> !tables
+------------+--------------+-------------+---------------+----------+------------+----------------------------+-----------------+--------------+-----------------+------------+
| TABLE_CAT  | TABLE_SCHEM  | TABLE_NAME  |  TABLE_TYPE   | REMARKS  | TYPE_NAME  | SELF_REFERENCING_COL_NAME  | REF_GENERATION  | INDEX_STATE  | IMMUTABLE_ROWS  | SALT_BUCKE |
+------------+--------------+-------------+---------------+----------+------------+----------------------------+-----------------+--------------+-----------------+------------+
|            | SYSTEM       | CATALOG     | SYSTEM TABLE  |          |            |                            |                 |              | false           | null       |
|            | SYSTEM       | FUNCTION    | SYSTEM TABLE  |          |            |                            |                 |              | false           | null       |
|            | SYSTEM       | LOG         | SYSTEM TABLE  |          |            |                            |                 |              | true            | 32         |
|            | SYSTEM       | SEQUENCE    | SYSTEM TABLE  |          |            |                            |                 |              | false           | null       |
|            | SYSTEM       | STATS       | SYSTEM TABLE  |          |            |                            |                 |              | false           | null       |
+------------+--------------+-------------+---------------+----------+------------+----------------------------+-----------------+--------------+-----------------+------------+
0: jdbc:phoenix:localhost:2181>

sql操作的前提之路

如果需要在phoenix中操作直接在hbase中创建的表,则需要在phoenix中进行表的映射。映射方式有两种:

  • 视图映射: Phoenix创建的视图是只读的,所以只能用来做查询,无法通过视图对源数据进行修改等操作。而且相比于直接创建映射表,视图的查询效率会低,原因是:创建映射表的时候,Phoenix会在表中创建一些空的键值对,这些空键值对的存在可以用来提高查询效率。修改视图不会对数据源进行改变。
  • 表映射:如果对表进行了修改,源数据也会改变,同时如果关联表被删除,源表也会被删除。但是视图就不会,如果删除视图,源数据不会发生改变。

hbase命令行中创建表test

$ cd /home/hadoop/hbase/bin

$ ./hbase shell
create 'test','name','company'

下面的视图映射和表映射均基于该表。

视图映射

   1)创建视图
create table "test"(empid varchar primary key,"name"."firstname"varchar,"name"."lastname"varchar,"company"."name" varchar,"company"."address"varchar);

按照family.cloum的方式创建表结构语句

   2)删除视图
  drop view "test";

表映射

使用Apache Phoenix创建对HBase的表映射,有两种方法:

1) 当HBase中已经存在表时,可以以类似创建视图的方式创建关联表,只需要将create view改为create table即可。

2)当HBase中不存在表时,可以直接使用create table指令创建需要的表,并且在创建指令中可以根据需要对HBase表结构进行显示的说明。

第1)种情况下,如在之前的基础上已经存在了test表,则表映射的语句如下:

create table "bamboo"(empid varchar primarykey,"name"."firstname"varchar,"name"."lastname"varchar,"company"."name" varchar,"company"."address"varchar);

# hbase 可以看到该表
hbase(main):001:0> list                                                                                                                                                                     
bamboo            

 第2)种情况下,直接使用与第1)种情况一样的create table语句进行创建即可,这样系统将会自动在Phoenix和HBase中创建person_infomation的表,并会根据指令内的参数对表结构进行初始化。

使用create table创建的关联表,如果对表进行了修改,源数据也会改变,同时如果关联表被删除,源表也会被删除。但是视图就不会,如果删除视图,源数据不会发生改变。

常用sql


# 进入命令行
./sqlline.py localhost:2181


# 创建表

create table "bamboo"(empid varchar primarykey,"name"."firstname"varchar,"name"."lastname"varchar,"company"."name" varchar,"company"."address"varchar);


CREATE TABLE IF NOT EXISTS us_population (
state CHAR(2) NOT NULL,
city VARCHAR NOT NULL,
population BIGINT 
CONSTRAINT my_pk PRIMARY KEY (state, city));

      在phoenix中,默认情况下,表名等会自动转换为大写,若要小写,使用双引号,如"us_population"。


# 显示所有表
  !table
       或
       !tables

# 插入记录
      upsert into us_population values('NY','NewYork',8143197);
      upsert into us_population values('BJ','BeiJing',9143197);
      upsert into us_population values('SH','ShangHai',9143198);
      upsert into us_population values('TY','TokYou',8043198);


#查询记录
select * from us_population ;
+--------+-----------+-------------+
| STATE  |   CITY    | POPULATION  |
+--------+-----------+-------------+
| BJ     | BeiJing   | 9143197     |
| NY     | NewYork   | 8143197     |
| SH     | ShangHai  | 9143198     |
| TY     | TokYou    | 8043198     |
+--------+-----------+-------------+

select * from us_population where state='NY';

# 删除记录:
 
delete from us_population where state='NY';


# alter:可添加或删除一列或更新表属性。被移除的列,其上数据会被删除。如果该列是主键,不能被移除,如果移除列的是一个视图,数据是不会受影响的。

 ALTER TABLE us_population ADD area varchar(50);

 upsert into us_population values('SZ','ShenZhen',443198,'20000');#插入一条数据
  select * from us_population ;
+--------+-----------+-------------+--------+
| STATE  |   CITY    | POPULATION  |  AREA  |
+--------+-----------+-------------+--------+
| BJ     | BeiJing   | 9143197     |        |
| SH     | ShangHai  | 9143198     |        |
| SZ     | ShenZhen  | 443198      | 20000  |
| TY     | TokYou    | 8043198     |        |
+--------+-----------+-------------+--------+


ALTER TABLE us_population DROP COLUMN area;#删除area列后ShenZhen的area值将丢失

ALTER TABLE us_population SET IMMUTABLE_ROWS=true#

 


#  删除表:如果删除表,表中数据也会被删除,如果是视图则不受影响
DROP TABLE "us_population";

#  退出命令行
      !quit


具体语法参照官网

https://phoenix.apache.org/language/index.html#upsert_select

java链接到phoenix客户端

pom

  <dependency>
<groupId>org.apache.phoenix</groupId>
<artifactId>phoenix-core</artifactId>
<version>4.10.0-HBase-1.2</version>
</dependency>

java

package com.epoint.test.phoenix;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Phoenix {
    private static String driver = "org.apache.phoenix.jdbc.PhoenixDriver";

    public static void main(String[] args) throws SQLException {
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        Statement stmt = null;
        ResultSet rs = null;

        Connection con = DriverManager.getConnection("jdbc:phoenix:hadoop0,hadoop1,hadoop2:2181");
        stmt = con.createStatement();
        String sql = "select * from test";
        rs = stmt.executeQuery(sql);
        while (rs.next()) {
            System.out.print("id:"+rs.getString("id"));
            System.out.println(",name:"+rs.getString("name"));
        }
        stmt.close();
        con.close();
    }
}

视图界面SQuirrel使用

如果希望通过客户端以图形化的界面操作Phoenix的话,可以下载并安装SQuirrel。

SQuirrel SQL Client是一个用Java写的数据库客户端,可以通过一个统一的用户界面来操作MySQL 、PostgreSQL 、MSSQL、 Oracle等任何支持JDBC访问的数据库。使用起来非常方便。

SQuirrel下载页面:http://squirrel-sql.sourceforge.net/#installation。

SQuirrel的安装步骤(参考https://phoenix.apache.org/installation.html):

1)移除SQuirrel的lib文件夹下的phoenix-[oldversion]-client.jar(如果有的话),然后拷贝phoenix-[newversion]-client.jar到SQuirrel的lib文件夹下,phoenix-[newversion]-client.jar须与欲连接的hbase的lib下的phoenix版本一致。

2)windows下,运行squirrel-sql.bat启动SQuirrel,在启动界面下,切换到Drivers选项卡,点击+号添加新的驱动。

3)在添加驱动对话框中,设置name为Phoenix,设置Example URL为 jdbc:phoenix:localhost,其中的localhost为hbase使用的Zookeeper主机名。

4)设置Class Name文本框的内容为 “org.apache.phoenix.jdbc.PhoenixDriver”, 如图4.1,然后点击“OK”关闭。

5)切换到Aliases选项卡,点击+新建一个alias。

6)在对话框中,name:任何名称,Driver:选择phoenix,username、password可省略,或者填任意值均可。

7)URL的内容为:jdbc:phoenix: zookeeperquorum server,例如,要连接本机的hbase,URL为:jdbc:phoenix:localhost,如图4.2。

8)点击Test,在新对话框中选择connect,如果一切设置正确的话,应该连接成功,然后点击OK关闭对话框。

9)双击新建的phoenix alias,点击connect,然后就可以通过phoenix的sql语句操作hbase了,如图4.3。

参考资料

单机安装
https://blog.youkuaiyun.com/xerjava/article/details/79072290

集群安装
https://www.cnblogs.com/zlslch/p/7096353.html

Phoenix安装及使用 Phoenix安装及使用 1.背景介绍 1.1Phoenix定义 Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表,插入数据和查询HBase数据。 1.2Phoenix特点 容易集成:如Spark,Hive,Pig,Flume和Map Reduce。 性能好:直接使用HBase API以及协处理器和自定义过滤器,可以为小型查询提供毫秒级的性能,或者为数千万行提供数秒的性能。 操作简单:DML命令以及通过DDL命令创建表和版本化增量更改。 阅读详情

相关推荐

10.2 构网型变流器引发的次同步振荡与宽频振荡问题:机理分析与抑制技术

随着构网型变流器在新型电力系统中的规模化部署,其作为电压源主动支撑电网的能力得到验证的同时,也引发了一系列前所未有的稳定性问题。传统的同步发电机主导的电力系统中,振荡模式主要集中于**低频区间**。然而,构网型变流器通过快速数字控制实现的虚拟同步、惯性响应等先进功能,其控制环路动态与电网阻抗、其他电力电子设备之间产生了复杂的交互作用。这种交互不仅可能诱发经典的**次同步振荡**,更可能催生频率范围从数赫兹到数百赫兹甚至上千赫兹的**宽频振荡**。

技术工作者 1301

Phoenix使用

Hbase适合存储大量的对关系运算要求低的NOSQL数据,受Hbase 设计上的限制不能直接使用原生的API执行在关系数据库中普遍使用的条件判断和聚合等操作。Hbase很优秀,一些团队寻求在Hbase之上提供一种更面向普通开发人员的操作方式,Apache Phoenix即是。Phoenix 基于Hbase给面向业务的开发人员提供了以标准SQL的方式对Hbase进行查询操作,并支持标准SQL中大部分特性:条件运算,分组,分页,等高级查询语法。

a_black03的博客 1682

RK3576+IMX415 MIPI摄像头零拷贝显示系统

MIPI CSI-2是嵌入式视觉系统中主流的高速图像传感器接口标准,其核心价值在于低延迟、高带宽与硬件级DMA直通能力。基于V4L2子系统与DRM/KMS驱动栈,可构建从传感器RAW数据到帧缓冲区的零拷贝通路,显著降低CPU负载并提升实时性。该技术广泛应用于工业检测、边缘AI推理前数据接入及多路同步采集等场景。本文以Rockchip RK3576 SoC和索尼IMX415传感器为典型组合,详解MIPI物理层适配、内核驱动集成、GStreamer零拷贝管道搭建及systemd服务化部署,覆盖从硬件信号完整性到

weixin_36047538的博客 216

Apache Phoenix 5.1.2 安装与使用文档超详细图文步骤

1、简介 1.1、概述 Apache Phoenix 是 HBase 的 SQL 驱动。Phoenix 使得 HBase 支持通过 JDBC 的方式进行访问,并将你的 SQL 查询转成 HBase 的扫描和相应的动作。 1.2、官网 Apache Phoenix 官网 2、准备工作 2.1、安装 JDK 8 Centos 单机安装 Hbase 2.3.6 3、Phoenix 下载 ...

蜗牛的博客 6447

手把手教学,Python 游戏编程之实现飞机大战(含源代码)

我想大家都是有玩过类似飞机大战的射击类游戏,也享受目标被消除通过后带来的愉悦感。那么如果用Python来实现飞机大战游戏?下面就跟大家一起用Python来做一个小游戏,不仅可以从中感受到乐趣,还可以提升自己的能力。

veratata的博客 1万+

DAIC-WOZ抑郁数据集实战:从申请到特征提取的全流程避坑指南

本文详细解析了DAIC-WOZ抑郁数据集从申请到特征提取的全流程,提供了实用的避坑指南和代码模板。涵盖数据获取技巧、多模态特征工程(面部动作单元、音频特征、文本处理)以及样本不平衡解决方案,帮助研究者高效处理这一经典抑郁分析数据集。

weixin_29196315的博客 171

【博学谷学习记录】超强总结,用心分享 | Phoenix的使用

Phoenix的使用

Onzswhite的博客 308

保姆级教程:在PyCharm里用Continue插件一键接入DeepSeek API(含乱码修复)

本文详细介绍了如何在PyCharm中通过Continue插件无缝集成DeepSeek API,提供从环境准备到高级配置的全流程指南,包括解决常见的乱码问题。通过本教程,开发者可以轻松实现AI编程助手的高效调用,提升代码编写和调试效率。

weixin_30275415的博客 850

Flutter Phoenix 使用指南

Flutter Phoenix 使用指南 1. 项目目录结构及介绍 本部分将概述flutter_phoenix项目的主要目录结构及其重要组件。 flutter_phoenix/ ├── lib/ │ └── phoenix.dart # 核心库文件,包含Phoenix类,用于应用重启逻辑。 │ └── phoenix_widget.dart # ...

gitblog_00448的博客 518

ResNet改进(45):结合通道混洗(ShuffleNet)的混合架构

本文提出了一种创新的卷积神经网络(CNN)架构CustomResNet,它将ResNet34与通道混洗(ChannelShuffle)技术相结合。该模型通过ShuffleBlock模块替换原始ResNet层,包含三个核心组件:1) ChannelShuffle模块实现通道分组混洗;2) ShuffleBlock模块整合点卷积、分组卷积和残差连接;3) CustomResNet主模型保持ResNet整体架构但替换核心层为ShuffleBlock。这种设计既保留了ResNet的残差学习能力,又通过通道混洗增强特

2401_82355416的博客 209

一句话看懂 vibing-steampunk

摘要: vibing-steampunk(vsp)是一个连接SAP ABAP开发工具(ADT)与AI编码代理(如Claude、GitHub Copilot)的桥梁,通过MCP协议实现自动化代码读写、调试和部署。它利用ADT API直接访问SAP系统,绕过传统GUI操作,支持ECC和S/4HANA等环境。工具提供包分析、依赖检查、LUW行为识别等功能,显著提升ABAP项目维护效率。其创新Hyperfocused模式和方法级编辑大幅降低token消耗,而上下文压缩技术则优化了AI对ABAP代码的理解能力,特别适

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 113

Phoenix项目安装与使用指南

Phoenix项目安装与使用指南 1. 项目目录结构及介绍 欢迎使用Phoenix,这是一个基于某技术栈的高性能Web开发框架。以下是项目的典型目录结构及其简要说明: ├── README.md # 项目简介和快速入门 ├── mix.exs # Mix项目的配置文件,定义了依赖、版本等信息 ├── config # ...

gitblog_00340的博客 513

嵌入式通信协议框架的四层架构设计与实现

本文详细介绍一种模块化的嵌入式通信协议框架设计,采用四层架构:硬件抽象层统一管理数据收发与缓冲,隔离硬件差异;协议管理层通过特征识别自动路由多协议数据,支持动态扩展;协议处理层独立实现各协议解析/构建,确保校验安全与零拷贝效率;应用层采用表驱动模式处理业务逻辑,与协议细节解耦。 该架构已应用于工业控制等领域,具备强类型安全、高扩展性和平台无关性特点,显著提升复通信场景下的开发效率与系统可靠性。提供完整代码实现与设计要点分析,助力开发者构建高效通信栈。

Bit_Dong的博客 2464

Phoenix框架安装与使用指南

Phoenix是构建可扩展的Web应用的强大Elixir框架。其目录结构设计旨在促进代码的组织和可维护性。以下是一些关键目录的简要说明: ``` ├── _build # 编译后的产出物,包括Beam字节码和其他编译结果。 ├── config # 配置文件目录,包括应用程序的环境配置(config.env.ex)。 ├── deps ...

gitblog_01137的博客 697

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Apache Phoenix 连接器安装与使用指南

Apache Phoenix 连接器安装与使用指南 一、项目介绍 Apache Phoenix 是一个高性能的 SQL 查询引擎,用于 HBase 数据库。它提供了标准 JDBC 接口来访问 HBase 表数据,通过将 SQL 转换成高效的 scan 和 filter 操作,使得开发人员可以轻松地在 HBase 上执行复杂的查询操作。 Phoenix 连接器是 Apache Phoenix 的关键...

gitblog_00564的博客 1232

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Phoenix_Ecto开源项目安装与使用指南

Phoenix_Ecto开源项目安装与使用指南 1. 项目的目录结构及介绍 Phoenix_Ecto是结合了Elixir的Web框架Phoenix和数据访问库Ecto的一个库,它旨在简化Phoenix应用中数据库的交互。下面是该项目的基本目录结构及其简介: phoenix_ecto/ ├── CHANGELOG.md - 记录项目版本更新日志。 ├── CONTRIBUTING.md...

gitblog_00888的博客 431

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

phoenix使用指南

7 phoenix 7.1 phoenix简介 Phoenix是Hbase开源的SQL皮肤,可以用标准的JDBC API来代替HBase客户端API来创建表、插入数据和查询Hbase数据。 特点: 容易集成:如Spark、Hive、Flume、MR 操作简单:DML命令以及DDL命令 支持HBase二级索引 7.2 phoenix的安装配置 步骤1:上传安装包到/opt/software 步骤2:解压安装包到/opt/module/ [atguigu@hadoop102 software]$ tar

qq_43523503的博客 2243

终极Phoenix CLI工具使用指南:如何高效管理LLM监控平台

Phoenix CLI是一款强大的命令行工具,专为高效管理和监控LLM应用而设计。作为AI Observability & Evaluation平台的核心组件,它提供了便捷的命令行接口,帮助开发者轻松获取和分析LLM应用的关键指标与性能数据。无论您是经验丰富的开发者还是刚入门的新手,Phoenix CLI都能让您轻松掌握LLM监控平台的管理技巧。 ## 安装Phoenix CLI的最快方法 要

gitblog_00187的博客 925

Phoenix 前端设计规范:Counter 计数徽章组件使用指南

本文基于 Phoenix 仓库中的前端设计规范文档 [counters.md](https://link.gitcode.com/i/6daa4b59076fcc24d9869893412e6889),系统讲解 Phoenix 应用中「标签 + 数字计数」场景下的统一组件方案——`Counter`。文章涵盖该组件的强制使用规则、正确/错误写法、三种视觉变体(`default` / `quiet`

gitblog_00920的博客 915

使用Phoenix通过sql语句更新操作hbase数据

hbase 提供很方便的shell脚本,可以对数据表进行 CURD 操作,但是毕竟是有一定的学习成本的,基本上对于开发来讲,sql 语句都是看家本领,那么,有没有一种方法可以把 sql 语句转换成 hbase的原生API呢? 这样就可以通过普通平常的 sql 来对hbase 进行数据的管理,使用成本大大降低。Apache Phoenix 组件就完成了这种需求,官方注解为 “Phoenix - we...

mnasd的博客 2723

Apache Phoenix 4种使用方式

Phoenix使用 文章目录Phoenix使用(1)批处理方式(2) 命令行方式(3): GUI方式 Phoenix可以有4种方式调用: 批处理方式 命令行方式 GUI方式 JDBC调用方式 (1)批处理方式 A: 创建user_phoenix.sql文件 内容如下 CREATE TABLE IF NOT EXISTS user_phoenix ( state CHAR(2) NOT NUL...

大数据流浪法师的学习笔记与分享 1945

安装配置Phoenix

一、背景介绍 Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表,插入数据和查询HBase数据。 1) 容易集成:如Spark,Hive,Pig,Flume和Map Reduce。 2) 性能好:直接使用HBase API以及协处理器和自定义过滤器,可以为小型查询提供毫秒级的性能,或者为数千万行提供数秒的性能。 3) 操作简单:DML命令以及通过DDL命令创建表和版本化增量更改。 4) 安全功能:支持GRANT和REVOKE。 5) 完..

l2023TF的博客 3102

phoenix 读取mysql_Phoenix JDBC访问

引入Phoenix jar在maven项目中引入Phoenix jar包:org.apache.phoenixphoenix-core4.8.0-HBase-1.1备注:版本需与hbase版本一致,否则会出现问题使用JDBC访问PhoenixPhoenix除了提供SQLLine这种命令方式,同时提供了JDBC代码的访问方式。packagecom.dajiangtai.phoenix;importj...

weixin_39826089的博客 286
上一篇: Hbase使用javaAPI链接调用和过滤器API的使用
下一篇: hadoop执行任务时常见exception
牧竹子
博客等级 码龄17年 572粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值