一、主要代码
package com.sgcc.mcsas.bigdata.tool; import com.sgcc.mcsas.bigdata.service.HBaseServiceImpl; import com.sgcc.mcsas.bigdata.service.IHBaseService; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.client.Result; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; /** * Created by dwxx-120 on 2016/7/12. */ public class Export { private static IHBaseService service = new HBaseServiceImpl(); private static final int count = 5;//记录数 private static final String fileName = "D:/hbase_export.xls"; public static void exportExcel(List<String> tableNames) throws Exception { //创建excel文件 File file = new File(fileName); if (!file.exists()) { file.createNewFile(); } //设定输出流 FileOutputStream fos = new FileOutputStream(file); HSSFWorkbook book = new HSSFWorkbook(); for (int k = 0; k < tableNames.size(); k++) { String tableName = tableNames.get(k); //取部分数据 List<Result> results = service.getTopSomeRecords(tableName, "05M", count); //创建sheet HSSFSheet sheet = book.createSheet(); book.setSheetName(k, tableName.replace(":", "_")); //为空返回 if (results.size() == 0) { System.out.println(tableName + " has no data!"); continue; } //生成表头 HSSFRow header = sheet.createRow(0); HSSFCell header_rowkey = header.createCell(0); //rowkey表头 header_rowkey.setCellValue("ROWKEY"); //其他表头 List<Cell> cells0 = results.get(0).listCells(); for (int i = 0; i < cells0.size(); i++) { HSSFCell header_other = header.createCell(i + 1); String name = new String(cells0.get(i).getQualifier()); header_other.setCellValue(name); } //遍历查询的数据 for (int i = 0; i < results.size(); i++) { //一个Result创建一行 HSSFRow data_row = sheet.createRow(i + 1); Result r = results.get(i); //设置rowkey的值 String rowkey = new String(r.getRow()); HSSFCell data_rowkey = data_row.createCell(0); data_rowkey.setCellValue(rowkey); //设置其他值 List<Cell> cellList = r.listCells(); for (int j = 0; j < cellList.size(); j++) { HSSFCell data_other = data_row.createCell(j + 1); data_other.setCellValue(new String(cellList.get(j).getValue())); } } } //写入 book.write(fos); } public static void main(String args[]) throws Exception { //HBase表名 List<String> list = new ArrayList<String>(); list.add("mcsas:zxjc_aeolianvibration"); list.add("mcsas:zxjc_airmoisture"); list.add("mcsas:zxjc_airpresure"); list.add("mcsas:zxjc_brakecable"); exportExcel(list); } }
二、HBase取数据主要代码(getTopSomeRecords)
/** * 获取指定位置向下N条记录 */ public List<Result> getTopSomeRecords(String tableName, String startRow, Integer count) throws HBaseException { Connection connection = null; Table hTable = null; try { connection = ConnectionFactory.createConnection(conf); hTable = connection.getTable(TableName.valueOf(tableName)); Scan scan = new Scan(); List<Result> results = new ArrayList<Result>(); scan.setCacheBlocks(true); scan.setCaching(10000); scan.setStartRow(Bytes.toBytes(startRow)); PageFilter filter = new PageFilter(count); scan.setFilter(filter); ResultScanner scanner = hTable.getScanner(scan); for (Result r : scanner) { results.add(r); } scanner.close(); return results; } catch (IOException e) { e.printStackTrace(); logger.error("获取数据出错: ", e); throw new HBaseException(HBaseException.UNKNOW_ERROR, "获取数据出错: ", e); } finally { closeHTable(hTable); closeConn(connection); } }
三、备注
1、本文中一个表对应一个sheet,最终只有一个Excel文件,里面含有多个sheet
2、本文只是取部分数据,将数据先存入List中,如果数据量太大,会导致内存溢出,另外Excel也不可能存放太多的数据,建议只取部分数据
相关推荐
这个流程体现了大数据处理中的一种典型数据流:从NoSQL系统(如HBase)到数据仓库(如Hive),再到关系型数据库,最后以结构化的文本格式供其他系统或工具使用。通过这样的操作,可以充分利用各种工具的优势,实现...
基于JavaFX + HBase API开发,...5. 核心设计:通过Apache POI 实现了 Excel(对Excel 03 和 07 版本全部支持) 和 HBase 之间数据导入和导出支持,使用 Java多线程技术使得导入Excel数据到HBase速度提升了7倍左右!
用户可以将CSV或Excel文件批量导入到HBase表中,也可以将数据导出为各种格式,便于数据分析或备份。这对于数据迁移和数据交换场景非常有用。 在管理层面,此工具可能还包括权限管理、监控和报警功能。例如,可以...
接着用“Excel输出”将数据导出到Excel文件,两者通过连接线关联并配置。 4) 执行转换:点击工具栏的绿色箭头开始转换,查看转换信息,完成数据迁移。 【处理HBase数据】 Kettle也支持与Hadoop生态系统中的HBase...
6. 数据可视化:运用JQuery、Echarts、Easy UI等技术呈现图表和表格,Apache POI处理Excel和CSV的导入导出,Log4J记录日志,Spring框架实现页面、服务和数据的集成管理,DBCP实现数据库连接池。 7. 数据模型层次:...
9. **导出与打印**:报表可以导出为PDF、Excel、图片等多种格式,并支持打印功能。 10. **Web端报表设计器**:提供Web界面的报表设计器,使得非技术人员也能进行报表设计。 在实际开发中,`jimureport-spring-boot...
用户可以编写复杂的SQL语句,执行后直接在结果集中查看返回的数据,也可以导出结果为CSV、Excel或其他格式。 **4. 表格和图表视图** SQuirreL不仅以表格形式展示查询结果,还支持将结果转换为图表,如柱状图、饼图...
通过Java JDBC(Java Database Connectivity)驱动,DbVisualizer能够连接到包括MySQL、Oracle、PostgreSQL、SQL Server、DB2、SQLite、Hadoop HBase等在内的众多数据库管理系统。这意味着用户无需为每个特定的...
同时它还支持报表Excel导出、图表显示及固定表头与左边列的功能。 欢迎加入QQ群交流:(365582678) mvn -DskipTests package mvn spring-boot:run -pl easyreport-web 然后就可以通过浏览器localhost:8080查看 ...
导入导出支持Excel/PDF,可以选择jxl/poi/excel2007的pddfbox/iText,XML文件解析可使用dom4j/Digester,WebServices发布建议使用cxf。 **基础类库** J2EE服务端开发涉及的库包括apache-commons提供基础类扩展,...
EasyReport是一个简单易用的Web报表工具,...方便向AMD模块化转换报表引擎查询支持CP30、Druid、DBCP2连接池JAVA部分代码重构加入用户及权限管理模块数据访问采用mybatis框架,方便二次开发报表展现支持自定义生成模板
- 数据源广泛,支持JDBC SQL查询、XML文件、CSV文件、HQL(Hibernate查询)、HBase以及JAVA集合等。 - 允许自定义数据源,通过JASPER文件和数据源生成用户所需的文档格式。 ### 3. JasperReport相关文件介绍 - **...