apache phoenix的JAVA客户端访问

在Phoenix-4.0.0(注意要配合hbase0.98.1+,否则会抛异常)的安装目录下,有hadoop-1和hadoop-2,目录,目录中有phoenix-4.0.0-incubating-client.jar将其拷贝到工程目录下,我用的是Hadoop1

然后就可以通过jdbc来访问phoenix数据接口。


查询的代码

package org.tcse.electric.local;


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


public class TestConnectPhoenix {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
            Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
        } catch(ClassNotFoundException ex) {
            ex.printStackTrace();
        }
		try {
			Connection conn = DriverManager
					.getConnection("jdbc:phoenix:133.133.134.188");
			Statement statement = conn.createStatement();
			ResultSet ret = statement.executeQuery("select * from ph_devices");
			while(ret != null && ret.next())
			{
//				System.out.println(ret);
				System.out.println(ret.getString(1));
				System.out.println(ret.getString(2));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}


更新的代码:

package org.tcse.electric.local;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.springframework.web.bind.annotation.RequestParam;

public class GetMeterLogLocal {
	public String helloRequestBody( String eleData) {
		try {
			Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
		} catch (ClassNotFoundException ex) {
			ex.printStackTrace();
			return "pheonix error!";
		}

		Map<String, Integer> nameMap = new HashMap<String, Integer>() {
			{
				put("DevId", 1);
				put("Time", 2);
				put("U", 3);
				put("I", 4);
				put("Usage", 5);
				put("Sum", 6);
			}
		};
		Connection conn;
		try {
			conn = DriverManager.getConnection("jdbc:phoenix:133.133.134.188");

			String deviceSql = "UPSERT INTO ph_meterlogData(DEVID,TIME,U,I,Usage,Sum) VALUES(?,?,?,?,?,?)";
			PreparedStatement statement = conn.prepareStatement(deviceSql);
			String[] line = eleData.split(";");
			for (int i = 0; i < line.length; i++) {
				if(line[i].equals(""))
					continue;
				String[] cell = line[i].split("_");
				for (int j = 0; j < cell.length; j++) {
					String[] kv = cell[j].split(":");
					if (kv[0].trim().equals("DevId")) {
						statement.setInt(1, Integer.parseInt(kv[1]));
					} else if (kv[0].trim().equals("Time")) {
						SimpleDateFormat sdf = new SimpleDateFormat(
								"yyyyMMddHHmmssS");
						Date time = sdf.parse(kv[1]);
						statement
								.setTimestamp(2, new Timestamp(time.getTime()));
					} else if (kv[0].trim().equals("U")) {
						statement.setFloat(3, Float.parseFloat(kv[1]));
					} else if (kv[0].trim().equals("I")) {
						statement.setFloat(4, Float.parseFloat(kv[1]));
					} else if (kv[0].trim().equals("Usage")) {
						statement.setFloat(5, Float.parseFloat(kv[1]));
					} else if (kv[0].trim().equals("Sum")) {
						statement.setFloat(6, Float.parseFloat(kv[1]));
					}
					
				}
				statement.setFloat(5, 0);
				statement.execute();
				if (i % 1000 == 0 )
					conn.commit();
			}
			conn.commit();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return e.getMessage();
		}
		return "helloRequestBody";

	}
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值