OneCoder只是一个初学者,记录的只是自己的一个过程。不足之处还望指导。
看网上说导入大量数据,用bulk load的方式效率比较高。bulk load可以将固定格式的数据文件转换为HFile文件导入,当然也可以直接导入HFile文件。所以OneCoder最开始考虑的生成HFile文件供HBase导入,不过由于手太新,一直没有搞定。参考了很多网上的代码也没跑通。暂时搁浅。
后来OneCoder采用了,生成普通的数据格式文件,然后用过imporsttsv命令导入的方式成功。生成数据文件代码如下:
01.
private
static
final
String PATH =
"F:/data.txt"
;
02.
03.
/**
04.
* @param args
05.
* @author lihzh
06.
* @alia OneCoder
07.
* @blog http://www.it165.net
08.
* @throws IOException
09.
* @date 2012-11-14 下午4:51:22
10.
*/
11.
public
static
void
main(String[] args)
throws
IOException {
12.
long
startTime = System.currentTimeMillis();
13.
File dataFile = getFile();
14.
FileWriter writer =
null
;
15.
try
{
16.
writer =
new
FileWriter(dataFile);
17.
int
timeCount =
1
;
18.
int
resourceCount =
1
;
19.
for
(
int
j =
0
; j < timeCount; j++) {
20.
long
timeStamp = System.currentTimeMillis();
21.
for
(
int
i =
0
; i < resourceCount; i++) {
22.
UUID uuid = UUID.randomUUID();
23.
String rowKey = uuid.toString() +
"_"
+ timeStamp;
24.
Random random =
new
Random();
25.
String cpuLoad = String.valueOf(random.nextDouble())
26.
.substring(
0
,
4
);
27.
String memory = String.valueOf(random.nextDouble())
28.
.substring(
0
,
4
);
29.
StringBuilder builder =
new
StringBuilder();
30.
builder.append(rowKey).append(
"\t"
).append(cpuLoad)
31.
.append(
"\t"
).append(memory).append(
"\t"
).append(uuid.toString()).append(
"\t"
).append(timeStamp);
32.
writer.append(builder.toString());
33.
if
((i +
1
) * (j +
1
) < timeCount * resourceCount) {
34.
writer.append(
"\r"
);
35.
}
36.
}
37.
}
38.
long
endTime = System.currentTimeMillis();
39.
System.out.println(
"Cost Time: "
+ (endTime - startTime));
40.
}
catch
(IOException e) {
41.
e.printStackTrace();
42.
}
finally
{
43.
writer.close();
44.
}
45.
}
46.
47.
/**
48.
* 得到一个新文件
49.
*
50.
* @return
51.
* @author lihzh
52.
* @date 2012-11-14 下午4:53:31
53.
*/
54.
private
static
File getFile() {
55.
File file =
new
File(PATH);
56.
if
(!file.exists()) {
57.
try
{
58.
file.createNewFile();
59.
}
catch
(IOException e) {
60.
e.printStackTrace();
61.
}
62.
}
63.
return
file;
64.
}
文件格式大致如下:
29611690-69cb-4749-8bd5-be75793d6611_1352968490061 0.41 0.34 29611690-69cb-4749-8bd5-be75793d6611 1352968490061
然后将文件上传到HDFS中,
hadoop fs -put /home/admin/Desktop/data.txt /test
转换成HFile格式存储 www.it165.net
hadoop jar hbase-version.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,c1,c2 -Dimporttsv.bulk.output=tmp hbase_table hdfs_file 生成HFile文件。其中c1,c2
是列名,格式为:列族:列名
然后,导入到HBase中:
hadoop jar hbase-version.jar completebulkload /user/hadoop/tmp/cf hbase_table
这里的路径都是hdfs的路径。
相关推荐
Hbase笔记 —— 利用JavaAPI的方式操作Hbase数据库(往hbase的表中批量插入数据)
基于hadoop的,java实现hive快速导数据到Hbase解决方案。
博客配套文件,详细演示了如何通过MR程序的方式bulkload数据到hbase,代码可直接用于生产环境。
NULL 博文链接:https://787141854-qq-com.iteye.com/blog/2067818
hbase各种例子新增修改删除批量导入: public static void main(String[] args) throws IOException { Configuration conf = HBaseConfiguration.create(); HBaseHelper helper = HBaseHelper.getHelper(conf); ...
Hbase调用JavaAPI实现批量导入操作.docx
工作中遇到的问题 即 bulkload 实现hive 到Hbase批量写入数据 工作中遇到的问题 即 bulkload 实现hive 到Hbase批量写入数据
hbase 常用参数含义,默认值,调优建议(必须参数,split,compaction,blockcache,memstore flush,hlog,zookeeper,其他,等相参数名称、含义、默认值、调优建议)
hbase海量数据的全量导入方法,大数据导入。
通过使用 WAL 和缓冲的 Put 从 Hdfs 文件中摄取 HBase 记录 通过 WAL(使用 Put)将具有 PARQUET 格式的 hdfs 文件加载到 Hbase 的包。 该包基于仅使用 Mapper 加载表。 很快我将添加如何使用 reducer 以及使用 MR ...
hbase批量加载 从RCFile进行HBase批量加载的临时代码 这将使用LoadIncrementalFiles从HFileOutputFormat2中Mapreduce写入的数据中加载HBase表。
tsv格式的数据库测试文件,hbase可以通过采用importtsv导入外部数据到hbase中
手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 ...2. HBase批量装载——Bulk load 3. HBase的协处理器(Coprocessor) 4. HBase事务 5. HBase数据结构
批量执行hbase shell 命令 #!/bin/bash source /etc/profile exec $HBASE_HOME/bin/hbase shell <<EOF truncate 'tracker_total_apk_fact_zyt' major_compact('t_abc') disable 't_abc' drop 't_abc' create...
springboot搭建的hbase可视化界面 支持hbase的建表与删除 支持根据rowkey查询数据
HBaseBulkImportXML 如何将数据从 XML 文件批量导入 HBase 表的示例。hbase-bulk-import-XML-example 执照Apache 许可。 HBase 提供对大数据的随机读写访问,但将大数据放入 HBase 可能是一个挑战。 使用 API 将数据...
java操作Hbase之从Hbase中读取数据写入hdfs中源码,附带全部所需jar包,欢迎下载学习。
使用spark读取hbase中的数据,并插入到mysql中
Hbase有着先天的优势和先天的劣势,而劣势就是其较差的数据定位能力,也就是数据查询能力。因为面向列的特点,Hbase只能单单地以rowkey为主键作查询,而无法对表进行多维查询和join操作,并且查询通常都是全表扫描,耗费...
NULL 博文链接:https://zhangxiong0301.iteye.com/blog/2222342