声明
cp phoenix-4.2.2-server.jar /usr/lib/hbase/lib
service hbase-regionserver restart
[root@host1 ~]# cd phoenix-4.2.2-bin/
[root@host1 phoenix-4.2.2-bin]# cd bin
[root@host1 bin]# chmod +x *.py
我们建立sql 名叫 us_population.sql 内容是
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));
建立一个文件 us_population.csv
NY,New York,8143197
CA,Los Angeles,3844829
IL,Chicago,2842518
TX,Houston,2016582
PA,Philadelphia,1463281
AZ,Phoenix,1461575
TX,San Antonio,1256509
CA,San Diego,1255540
TX,Dallas,1213825
CA,San Jose,912332
SELECT state as "State",count(city) as "City Count",sum(population) as "Population Sum" FROM us_population GROUP BY state ORDER BY sum(population) DESC;
phoenix-4.2.2-bin/bin/psql.py host1,host2:2181 us_population.sql us_population.csv us_population_queries.sql
这条命令你同时做了 创建一个表,插入数据,查询结果 三件事情
[root@host1 ~]# phoenix-4.2.2-bin/bin/psql.py host1,host2:2181 us_population.sql us_population.csv us_population_queries.sql
15/03/04 17:14:23 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
15/03/04 17:14:24 WARN impl.MetricsConfig: Cannot locate configuration: tried hadoop-metrics2-phoenix.properties,hadoop-metrics2.properties
no rows upserted
Time: 0.726 sec(s)
csv columns from database.
CSV Upsert complete. 10 rows upserted
Time: 0.103 sec(s)
St City Count Population Sum
-- ---------------------------------------- ----------------------------------------
NY 1 8143197
CA 3 6012701
TX 3 4486916
IL 1 2842518
PA 1 1463281
AZ 1 1461575
Time: 0.048 sec(s)
hbase(main):002:0> scan 'US_POPULATION'
ROW COLUMN+CELL
AZPhoenix column=0:POPULATION, timestamp=1425460467206, value=\x80\x00\x00\x00\x00\x16MG
AZPhoenix column=0:_0, timestamp=1425460467206, value=
CALos Angeles column=0:POPULATION, timestamp=1425460467206, value=\x80\x00\x00\x00\x00:\xAA\xDD
CALos Angeles column=0:_0, timestamp=1425460467206, value=
CASan Diego column=0:POPULATION, timestamp=1425460467206, value=\x80\x00\x00\x00\x00\x13(t
CASan Diego column=0:_0, timestamp=1425460467206, value=
CASan Jose column=0:POPULATION, timestamp=1425460467206, value=\x80\x00\x00\x00\x00\x0D\xEB\xCC
CASan Jose column=0:_0, timestamp=1425460467206, value=
ILChicago column=0:POPULATION, timestamp=1425460467206, value=\x80\x00\x00\x00\x00+_\x96
ILChicago column=0:_0, timestamp=1425460467206, value=
NYNew York column=0:POPULATION, timestamp=1425460467206, value=\x80\x00\x00\x00\x00|A]
NYNew York column=0:_0, timestamp=1425460467206, value=
PAPhiladelphia column=0:POPULATION, timestamp=1425460467206, value=\x80\x00\x00\x00\x00\x16S\xF1
PAPhiladelphia column=0:_0, timestamp=1425460467206, value=
TXDallas column=0:POPULATION, timestamp=1425460467206, value=\x80\x00\x00\x00\x00\x12\x85\x81
TXDallas column=0:_0, timestamp=1425460467206, value=
TXHouston column=0:POPULATION, timestamp=1425460467206, value=\x80\x00\x00\x00\x00\x1E\xC5F
TXHouston column=0:_0, timestamp=1425460467206, value=
TXSan Antonio column=0:POPULATION, timestamp=1425460467206, value=\x80\x00\x00\x00\x00\x13,=
TXSan Antonio column=0:_0, timestamp=1425460467206, value=
10 row(s) in 0.2220 seconds
$ ./sqlline.py localhost
0: jdbc:phoenix:localhost>
0: jdbc:phoenix:localhost>!quit
命令开头需要一个感叹号,使用help可以打印出所有命令
0: jdbc:phoenix:localhost> help
!all Execute the specified SQL against all the current connections
!autocommit Set autocommit mode on or off
!batch Start or execute a batch of statements
!brief Set verbose mode off
!call Execute a callable statement
!close Close the current connection to the database
!closeall Close all current open connections
!columns List all the columns for the specified table
!commit Commit the current transaction (if autocommit is off)
!connect Open a new connection to the database.
!dbinfo Give metadata information about the database
!describe Describe a table
!dropall Drop all tables in the current database
!exportedkeys List all the exported keys for the specified table
!go Select the current connection
!help Print a summary of command usage
!history Display the command history
!importedkeys List all the imported keys for the specified table
!indexes List all the indexes for the specified table
!isolation Set the transaction isolation for this connection
!list List the current connections
!manual Display the SQLLine manual
!metadata Obtain metadata information
!nativesql Show the native SQL for the specified statement
!outputformat Set the output format for displaying results
(table,vertical,csv,tsv,xmlattrs,xmlelements)
!primarykeys List all the primary keys for the specified table
!procedures List all the procedures
!properties Connect to the database specified in the properties file(s)
!quit Exits the program
!reconnect Reconnect to the database
!record Record all output to the specified file
!rehash Fetch table and column names for command completion
!rollback Roll back the current transaction (if autocommit is off)
!run Run a script from the specified file
!save Save the current variabes and aliases
!scan Scan for installed JDBC drivers
!script Start saving a script to a file
!set Set a sqlline variable
!sql Execute a SQL command
!tables List all the tables in the database
!typeinfo Display the type map for the current connection
!verbose Set verbose mode on
hbase(main):003:0> describe 'employee'
DESCRIPTION ENABLED
'employee', {NAME => 'company', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => true
'1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'false', BLOCKSIZE => '65536', I
N_MEMORY => 'false', BLOCKCACHE => 'true'}, {NAME => 'family', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLIC
ATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => '
false', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}
1 row(s) in 0.1120 seconds
hbase(main):016:0> scan 'employee'
ROW COLUMN+CELL
row1 column=company:name, timestamp=1425537923391, value=ted
row1 column=company:position, timestamp=1425537950471, value=worker
row1 column=family:tel, timestamp=1425537956413, value=13600912345
row2 column=family:tel, timestamp=1425537994087, value=18942245698
row2 column=family:name, timestamp=1425537975610, value=michael
row2 column=family:position, timestamp=1425537985594, value=manager
2 row(s) in 0.0340 seconds
create 'employee','company','family'
put 'employee','row1','company:name','ted'
put 'employee','row1','company:position','worker'
put 'employee','row1','family:tel','13600912345'
put 'employee','row2','company:name','michael'
put 'employee','row2','company:position','manager'
put 'employee','row2','family:tel','1894225698'
scan 'employee'
0: jdbc:phoenix:localhost> CREATE TABLE IF NOT EXISTS "employee" ("no" CHAR(4) NOT NULL PRIMARY KEY, "company"."name" VARCHAR(30),"company"."position" VARCHAR(20), "family"."tel" CHAR(11), "family"."age" INTEGER);
2 rows affected (1.745 seconds)
0: jdbc:phoenix:localhost> SELECT * FROM "employee";
+------+--------------------------------+----------------------+-------------+------------------------------------------+
| no | name | position | tel | age |
+------+--------------------------------+----------------------+-------------+------------------------------------------+
| row1 | ted | worker | 13600912345 | null |
| row2 | michael | manager | 1894225698 | null |
+------+--------------------------------+----------------------+-------------+------------------------------------------+
UPSERT INTO "employee" VALUES ('row3','billy','worker','16974681345',33);
0: jdbc:phoenix:localhost> SELECT * FROM "employee";
+------+--------------------------------+----------------------+-------------+------------------------------------------+
| no | name | position | tel | age |
+------+--------------------------------+----------------------+-------------+------------------------------------------+
| row1 | ted | worker | 13600912345 | null |
| row2 | michael | manager | 1894225698 | null |
| row3 | billy | worker | 16974681345 | 33 |
+------+--------------------------------+----------------------+-------------+------------------------------------------+
3 rows selected (0.195 seconds)
hbase(main):054:0> scan 'employee'
ROW COLUMN+CELL
row1 column=company:_0, timestamp=1425543735420, value=
row1 column=company:name, timestamp=1425543735274, value=ted
row1 column=company:position, timestamp=1425543735323, value=worker
row1 column=family:tel, timestamp=1425543735420, value=13600912345
row2 column=company:_0, timestamp=1425543735767, value=
row2 column=company:name, timestamp=1425543735608, value=michael
row2 column=company:position, timestamp=1425543735720, value=manager
row2 column=family:tel, timestamp=1425543735767, value=1894225698
row3 column=company:_0, timestamp=1425543857594, value=
row3 column=company:name, timestamp=1425543857594, value=billy
row3 column=company:position, timestamp=1425543857594, value=worker
row3 column=family:age, timestamp=1425543857594, value=\x80\x00\x00!
row3 column=family:tel, timestamp=1425543857594, value=16974681345
3 row(s) in 0.0650 seconds
4.0.0
org.crazycake
play-phoenix
0.0.1-SNAPSHOT
jar
play-phoenix
http://maven.apache.org
UTF-8
apache release
https://repository.apache.org/content/repositories/releases/
maven-compiler-plugin
2.0.2
1.7
UTF-8
true
-nowarn
org.apache.maven.plugins
maven-shade-plugin
2.3
package
shade
junit
junit
3.8.1
test
org.apache.phoenix
phoenix-core
4.2.2
org.apache.phoenix
phoenix-core
4.2.0
package org.crazycake.play_phoenix;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class PhoenixManager {
public static void main(String[] args) throws SQLException {
Connection conn = null;
Statement stat = null;
ResultSet rs = null;
try {
Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
conn = DriverManager.getConnection("jdbc:phoenix:host1,host2:2181");
stat = conn.createStatement();
rs = stat.executeQuery("select * from \"employee\"");
while(rs.next()){
System.out.println("no: " + rs.getString("no"));
System.out.println("name: " + rs.getString("name"));
System.out.println("position: " + rs.getString("position"));
System.out.println("age: " + rs.getInt("age"));
}
} catch (Throwable e) {
e.printStackTrace();
} finally{
if(rs != null){
rs.close();
}
if(stat != null){
stat.close();
}
if(conn != null){
conn.close();
}
}
}
}
no: row1
name: ted
position: worker
age: 0
no: row2
name: michael
position: manager
age: 0
no: row3
name: billy
position: worker
age: 33