hbase首次导入大批次的数据成功!
本次主要是采用hbase自带的importtsv工具来导入。首先要把数据文件上传到hdfs上,然后导入hbase表格。该导入方式只支持.tsv数据文件的导入。
导入流程:
1.下载数据。我们在本文中将使用 “美国国家海洋和大气管理局 气候平均值”的公共数据集合。访问http://www1.ncdc.noaa.gov/pub/data/normals/1981-2010/下载。 我们使用在目录 products | hourly 下的小时温度数据(可以在上述链接页面中找到)。下载hly-temp-10pctl.txt文件。
2.用Python脚本将其处理,添加rowkey,并且处理成.tsv文件。Python脚本见:https://github.com/uprush/hac-book/blob/master/2-data-migration/script/to_tsv_hly.py,脚本内容有待进一步学习研究。
3.第三部就是创建用户hac,用于运行job;建议在生产环境如此实施。为了能够从客户端运行MapReduce Job,你需要将${hadoop.tmp.dir}目录的写权限开放给客户端的hac用户,我这里是/tmp下面的,具体的话还是见配置文件,最好是把目录建立在/usr/hadoop/tmp下面。
|
1
2
|
root@client1# usermod -a -G hadoop hacroot@client1# chmod -R 775 /tmp |
这里如果还不行的话,就直接chmod a+w /tmp
在HDFS中为hac用户建立主文件夹:
|
1
2
|
hadoop@client1$ $HADOOP_HOME/bin/hadoop fs -mkdir /user/hachadoop@client1$ $HADOOP_HOME/bin/hadoop fs -chown hac /user/hac |
并且同时也确认hac用户在HDFS中的MapReduce的临时目录中也有写权限:$HADOOP_HOME/bin/hadoop fs -chmod -R 775 /usr/local/hadoop/var/mapred我这里这个目录是不存在的,我是建好了以后又修改的权限。
4.接下来就是将.tsv文件上传到hdfs了,hadoop fs -mkdir /usr/hac/input 建立hdfs上文件的存放位置,hadoop fs -copyFromLocal /usr/hadoop/hly-temp-10pctl.tsv /usr/hac/input 完了以后可以查看一下hadoop fs -ls /usr/hac/input,有的话上传成功。
5.接下来建表create 'hly_temp', {NAME => 't', VERSIONS => 1}
6.使用hac用户运行importtsv工具,执行如下脚本:hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,t:v01,t:v02,t:v03,t:v04,t:v05,t:v06,t:v07,t:v08,t:v09,t:v10,t:v11,t:v12,t:v13,t:v14,t:v15,t:v16,t:v17,t:v18,t:v19,t:v20,t:v21,t:v22,t:v23,t:v24 hly_temp /usr/hac/input
过程中显示map **%,reduce 0%等等
7.验证:count 'hly_temp'
95630 row(s) in 12.2020 secondsscan 'hly_temp', {COLUMNS => 't', LIMIT => 10}AQW000617050110 column=t:v23,
timestamp=1322959962261, value=781SAQW000617050110 column=t:v24,timestamp=1322959962261, value=774C10 row(s) in 0.1850 seconds本文详细过程见:http://www.importnew.com/3645.html
还有一本伟大的书:HBase Administration Cookbook
hbase首次导入大批次的数据成功!的更多相关文章
- Mysql导入大SQL文件数据问题
如果sql文件过大,会出现mysql out of memory (Needed XXX bytes) ,或者 "MySQL server has gone away"问题; 另 ...
- java 跨数据库导入大数据
java 跨数据库导入大数据 /** * java程序跨服务器跨数据库批量导入导出百万级数据 * @param args * @throws Exception */ public static vo ...
- [原创]HBase学习笔记(4)- 数据导入
需要分别从Oracle和文本文件往HBase中导入数据,这里介绍几种数据导入方案. 1.使用importTSV导入HBase importTSV支持增量导入.新数据插入,已存在数据则修改. 1.1.首 ...
- Hbase 学习(十一)使用hive往hbase当中导入数据
我们可以有很多方式可以把数据导入到hbase当中,比如说用map-reduce,使用TableOutputFormat这个类,但是这种方式不是最优的方式. Bulk的方式直接生成HFiles,写入到文 ...
- sqlcmd导入大数据文件
sqlcmd导入大数据文件 SQLCMD 允许在Windows命令窗中通过命令行提示符运行脚本. 语法如下: sqlcmd [ { { -U <login id> [ -P <p ...
- HBase 写优化之 BulkLoad 实现数据快速入库
在第一次建立Hbase表的时候,我们可能需要往里面一次性导入大量的初始化数据.我们很自然地想到将数据一条条插入到Hbase中,或者通过MR方式等.但是这些方式不是慢就是在导入的过程的占用Region资 ...
- 选择阿里云数据库HBase版十大理由
根据Gartner的预计,全球非关系型数据库(NoSQL)在2020~2022预计保持在30%左右高速增长,远高于数据库整体市场. 阿里云数据库HBase版也是踏着技术发展的节奏,伴随着NoSQL和大 ...
- HBase Shell 十大花式玩儿法
前言:工欲善其事必先利其器,今天给大家介绍一下HBase Shell十大花式利器,在日常运维工作中,可以试着用起来. 1. 交互模式 也就是我们最常用到的Shell命令行的方式. $ hbase sh ...
- 导入CSV格式的数据
导入CSV格式的数据 (参见http://dev.mysql.com/doc/refman/5.6/en/load-data.html) 1.数据库表(st_pptn_r) CREATE TABLE ...
随机推荐
- De novo RNA-Seq Assembly Using De Bruijn Graphs
De novo RNA-Seq Assembly Using De Bruijn Graphs 2017-06-12 09:42:47 59 0 0 在说基因组的拼接之前,可 ...
- 关于redis和memcached的一些想法
看了redis和memcached,想到自己前几年以前会把内存分配及调用和程序写在一起.确实是不合理的.这样的话,主进程就会越来越大,而且模块也不是完全独立.不能做到松耦合. 实质就是把内存的读写I/ ...
- MySQL数据库相关操作
查看数据库 mysql> SHOW DATABASES; 选择数据库 mysql> USE 数据库名称: 查看当前数据库 mysql> select database(); -- 第 ...
- Laravel policy 的应用
Laravel 提供更简单的方式来处理用户授权动作.类似用户认证,有 2 种主要方式来实现用户授权:gates 和策略,我这里主要讲解下策略的使用. 文档 上面有详细的说明,我这里只根据自己使用过程做 ...
- Spring ConversionService 类型转换(一)Converter
Spring ConversionService 类型转换(一)Converter Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.h ...
- qr 生成二维码
package com.common; import com.swetake.util.Qrcode; import jp.sourceforge.qrcode.QRCodeDecoder; impo ...
- easyui下拉框过滤优化
项目中有个需求:编辑combobox的输入域会自动检索匹配项,当没有任何匹配项时,将combobox重置为初始状态. 处理方式:重写输入域的blur事件,判断当前值是否为加载的数据集的子集,如果不是则 ...
- Mockito学习(zz)
junitmaven软件测试框架项目管理 Mockito是一个流行的Mocking框架.它使用起来简单,学习成本很低,而且具有非常简洁的API,测试代码的可读性很高.因此它十分受欢迎,用 户群越来越 ...
- Django框架之Ajax和form组件
一.Django框架之查漏补缺 1)models,字段概况 name = models.CharField(max_length=) age = models.IntegerField() price ...
- 2018.10.31 NOIP模拟 一些情报(倍增)
传送门 题目并不难(想) 其实就是用倍增维护几个树上信息. 也就这么几个: 子树内最长链及其后继点. 子树内次长链及其后继点. 子树内第三场链(也就是dzyodzyodzyo口中鬼畜的次次长链) 点i ...