`
lminqiang
  • 浏览: 16046 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

phoenix 通过JDBC方式导入CSV文件性能测试

阅读更多

最近研究了一下 phoenix 基于JDBC方式导入的性能问题,测试环境:

hadoop (2.3.0+cdh5.0.0+548)
hbase(0.96.1.1+cdh5.0.0+60)

phoenix4.0.0.0

创建表tab_ps_xdr2, 带有4个索引列分别创建4个索引表,如下:

create table TAB_PS_XDR2 ( K VARCHAR NOT NULL PRIMARY KEY, A VARCHAR,  B VARCHAR, C VARCHAR, D VARCHAR, V VARCHAR) COMPRESSION='SNAPPY',SALT_BUCKETS=12,TTL='7200',VERSIONS='5';

create index CALLING_NUMBER2 on TAB_PS_XDR2 (A);

create index CALLED_NUMBER2 on TAB_PS_XDR2 (B);

create index IMSI2 on TAB_PS_XDR2 (C);

 

create index IMEI2 on TAB_PS_XDR2 (D);

测试代码:

 

public static void readCVS5(int pre, String path) { 
		File file = new File(path);
		long fileLength = 0;
		fileLength = file.length();
		int BUFFER_SIZE = (int) fileLength;// 100M的缓冲
		Connection _Connection = null;
		PreparedStatement _PreparedStatement = null;
		String tSQL = "UPSERT INTO TAB_PS_XDR2 VALUES(?,?,?,?,?,?)";
		try {
			_Connection = HBaseUtility.getConnection();
			_Connection.setAutoCommit(false);
			_PreparedStatement = _Connection.prepareStatement(tSQL);
			long start = System.currentTimeMillis();
			String pid = ManagementFactory.getRuntimeMXBean().getName().split("@")[0];  
			FileChannel fc = new RandomAccessFile(file, "r").getChannel();
			MappedByteBuffer inputBuffer = fc.map(
					FileChannel.MapMode.READ_ONLY, 0, fileLength);// 读取大文件
			byte[] dst = new byte[BUFFER_SIZE];
			int j = 0;
			for (int offset = 0; offset < fileLength; offset += BUFFER_SIZE) {
				if (fileLength - offset >= BUFFER_SIZE) {
					for (int i = 0; i < BUFFER_SIZE; i++)
						dst[i] = inputBuffer.get(offset + i);
				} else {
					for (int i = 0; i < fileLength - offset; i++)
						dst[i] = inputBuffer.get(offset + i);
				}
				InputStream in = new ByteArrayInputStream(dst);
				BufferedReader reader = new BufferedReader( new InputStreamReader(in), BUFFER_SIZE);
				String line = reader.readLine();
				String[] strs = null;
				while (line != null) {
						strs = parserLine2(line, ",");
						if (strs.length > 5) {
							_PreparedStatement.setString(1, strs[0]);
							_PreparedStatement.setString(2, strs[1]);
							_PreparedStatement.setString(3, strs[2]);
							_PreparedStatement.setString(4, strs[3]);
							_PreparedStatement.setString(5, strs[4]);
							_PreparedStatement.setString(6, strs[5]);

							_PreparedStatement.addBatch();
							if ((++j) % pre == 0) {
								_PreparedStatement.executeBatch();
								_PreparedStatement.clearBatch(); // 
								_Connection.commit();
								System.out.println( "executeInsert::" +pid);
							}
						} else {
							System.out.println("数据问题:" + j);
						}
					line = reader.readLine();
				}

				
				_PreparedStatement.executeBatch();
				_PreparedStatement.clearBatch();
				_Connection.commit();
				
				System.out.println("executeInsert-LashFlush!!"+pid);
				long totalTime = System.currentTimeMillis() - start;
				System.out.println("每秒处理数据:" + j * 1000 / totalTime);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				_PreparedStatement.close();
				_Connection.close();
			} catch (Exception e) {
				e.printStackTrace();
			}

		}

	
		
	}

 单进程(万条提交)测试:

sh cmd0.sh 10000  /home/cloudil/limq/test/a-bssap-1.cdr.csv &

测试时间大约23秒。

十进程测试(万条提交):

测试大约79秒,按照平均每个文件 95M计算, 每秒处理大约12M左右数据。

每次10000-11000条提交比较合适。

 

 

分享到:
评论

相关推荐

    下载ftp文件,读取内容通过Phoenix JDBC连接往Hbase数据库中建表插入数据。

    从ftp下载文件,通过Phoenix 的JDBC方式连接Hbase数据库,建表,导入数据,查询等操作。

    Flink Phoenix connector依赖包

    flink sql读写phoenix所使用到的连接器依赖包: flink-sql-connector-phoenix-1.14-1.0.jar 使用示例: create table tab2( ID STRING, NAME STRING, PRIMARY KEY (ID) NOT ENFORCED )WITH( 'connector' = '...

    使用Phoenix通过jdbc连接hbase

    使用Phoenix连接hbase数据库,PhoenixUtil连接hbase数据库,HbaseTest测试hbase数据库的创建、删除,及表数据的增删改查

    Phoenix Hbase springjdbc整合 demo

    Phoenix Hbase springjdbc整合 demo Phoenix最早是saleforce的一个开源项目,后来成为Apache基金的顶级项目。 Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入...

    Linux安装phoenix连接工具及文件

    Linux安装phoenix连接工具,由于文件太大,只上传了安装步骤和网盘下载链接

    JDBC driver

    Sybase官方的JDBC驱动程序——jConnect 驱动类名:com.sybase.jdbc3.jdbc.SybDriver 连接URL:jdbc:sybase:Tds:host:port/database?property_name=value

    hbase phoenix sql

    Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan,并编排执行以生成标准的JDBC结果集。直接使用HBase API、协同处理器与自定义过滤器,对于简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能...

    Phoenix/Insyde/Dell/EFI 自助修改工具 PhoenixTool 2.59 汉化版

    Phoenix/Insyde/Dell/EFI BIOS 添加、替换 SLIC 和 SLP 字 串,破解 SLI,以及更新其他模块的工具。  PhoenixTool.exe为英文原版,PhoenixTool_cn.exe为汉化版。 注:1、修改BIOS时可能需要提供RW Everything报告...

    hbase+phoenix 本机测试文档

    用phoenix对hbase建立二级索引,利用关系型数据库一样用sql语句操作HBase

    cdh6.3.2 集成 Phoenix

    cdh6.3.2 适配 Phoenix; cdh6.3.2 集成 Phoenix

    phoenix-4.14.0-cdh5.14.2-client.jar

    java使用jdbc调用Phoenix的依赖包 Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。Phoenix完全使用Java编写,作为HBase内嵌的JDBC...

    Phoenix安装文档

    ”这样的疑虑,事实上并不会,Phoenix通过以下方式实现了比你自己手写的方式相同或者可能是更好的性能(更不用说可以少写了很多代码): 作者:献给记性不好的自己 链接:http://www.jianshu.com/p/9d3e938081d2 來...

    Phoenix BIOS刷新工具包

    2.收集了大部分品牌机的SLIC文件; 3.Phoenix BIOS Editor2.1.0.0版; 4.PhoenixTool工具为Phoenix BIOS添加SLIC表; 5.RW-everything_V1.3工具及使用; 6.SLIC_ToolKit_V3.2工具,查看机器BIOS是否拥有SLIC表; 7....

    phoenix-5.0.0-cdh6.2.0-client.jar

    hbase phoenix 客户端连接jdbc的jar包,SQuirreL SQL Client,DbVisualizer 等客户端连接hbase配置使用

    apache-phoenix-jdbc-example

    该示例演示如何使用Java代码通过Phoenix连接到本地HBase实例。 使用docker映像在hbase顶部连接到Apache Phoenix,下面是docker项目的链接供参考: :

    Phoenix BIOS Editor Pro注册机

    Phoenix BIOS Editor是Windows...无须重建BIOS,BIOS ROM镜像文件可以通过本软件来编辑BIOS的相关选项。软件能自动把单个的ROM镜像文件解压成小的ROM模块,不需要源码可以修改子项,为您的产品推向市场节省时间和成本。

    phoenix-5.0.0-HBase-2.0-client.jar

    hbase phoenix 客户端连接jdbc的jar包,SQuirreL SQL Client,DbVisualizer 等客户端连接hbase配置使用

    phoenix2.ipa

    使用Impactor给iOS9.3.5越狱,将红雪文件phoenix2直接拖入Impactor程序越狱

    Phoenix BIOS Editor 2.2.1.3

    Phoenix BIOS Editor是Windows...无须重建BIOS,BIOS ROM镜像文件可以通过本软件来编辑BIOS的相关选项。软件能自动把单个的ROM镜像文件解压成小的ROM模块,不需要源码可以修改子项,为您的产品推向市场节省时间和成本。

    sqoop-from_phoenix-all.sh

    --driver org.apache.phoenix.jdbc.PhoenixDriver \ --connect jdbc:phoenix:192.168.111.45:2181 \ --query "select cs_mine_code, cs_data_time,ss_station_code,ss_transducer_code,ss_transducer_state,ss_...

Global site tag (gtag.js) - Google Analytics