如何将存储量很大的txt文档数据导入到hbase当中

我现在要写一个程序,将第三方导出的txt文件内容读取并放到hbase当中。
由于txt文档非常大(超过10G),我初步思路是通过单线程读取到一个线程安全的容器当中,然后再利用多线程向hbase中写入。
请问有没有什么更好的思路,谢谢!

0

4个回答

方案一:
1、在Linux环境利用split命令把文件分块;
2、多线程对多文件读取写入HBase
方案二:
1、要看文件的格式是怎么样的,你想存HBase的格式怎样的
2、把文件按照格式分割建表存入Hive
3、利用HiveIntegrate 工具把Hive映射到HBase 表
方案三:
1、HBase现已支持MapReduce,把文件先load到HDFS,利用命令:hdfs fs -copyFromLoad xxx xxxxxx
2、编写MapReduce程序,读取存入HDFS的文件,程序会自动split文件,然后有多个mapper读取
然后在reduce中把数据写入hbase。

0
wzhg0508
joeywen 回复leixingbang1989: 嘿嘿,谢谢打赏
4 年多之前 回复
leixingbang1989
大邦 谢谢你。我咨询过实验室的大牛,他的方案和你的方案三一样。愿以后能多向你请教。
4 年多之前 回复
wzhg0508
joeywen 抱歉,命令是:hdfs fs -copyFromLocal xxx xxxxxx
4 年多之前 回复
wzhg0508
joeywen 个人建议方案三,前提是会写MapReduce程序
4 年多之前 回复
  1. 分块读取文件
  2. 用内存映射文件方式读取文件,效率比较高
  3. 一个线程把内存数据写入hbase
0
leixingbang1989
大邦 多线程从内存中写入hbase是不是速度更快一些?
4 年多之前 回复
leixingbang1989
大邦 1.分块读取是什么,能不能解释一下?2.使用内存映射方式只能在2G以下大小的文件。
4 年多之前 回复

有容器能放得下10G的数据?
1把文件分成小文件
2把小文件按正常的方法读写。

0
leixingbang1989
大邦 用队列形式,单线程从文件中读取并向队列添加元素,然后多线程从队列中读取并移除元素,向hbase中写入。
4 年多之前 回复

分块读取文件是指什么?
2.文件超过2g后,使用内存映射就不可以了。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
txt文件导入HBase
create 'aipai',  {NAME=>'info'}: 创建表 describe 'aipai'  :查看表结构 scan 'aipai' ,{LIMIT=>20} :查看表前二十条数据 count 'aipai', {INTERVAL => 1000, CACHE => 500} :统计表数据 hadoop fs –put /tmp/hbas
文本文件导入HBase中
文本文件导入到Hbase中  创建表sudo su - su - hadoop ./hbase shellcreate 'table1',{NAME => 'DF', VERSIONS => 5}  www.2cto.com  配置环境 1.修改hadoop环境  vi /opt/hadoop-1.0.0/conf/hadoop-env.sh 增加如下信息 export HBA
MapReduce将HDFS文本数据导入HBase中
通过MapReduce导入数据到HBase有多种方式可以实现。首先启动Hadoop与HBase,然后创建一个空表,用于后面导入数据:hbase(main):006:0> create 'mytable','cf' 0 row(s) in 10.8310 seconds=> Hbase::Table - mytable hbase(main):007:0> list TABLE
文本数据导入HBASE
在将有定界符文本文件导入HBASE库中,需要将后面的定界符去掉,否则将导入失败。 如下所示: [hadoop@hadoop1 bin]$ cat /tmp/emp.txt 1,A,201304, 2,B,201305, 3,C,201306, 4,D,201307, 这个文件后面多了一个逗号。 [hadoop@hadoop1 bin]$ hadoop fs -p
使用sqoop将mysql数据导入hbase
下表:   1、通过hbase shell 打开hbase。 2、创建一个hbase表 create 'so','o'    3、将so表的数据导入到hbase中。 opt文件: --connect:数据库 --username :数据库用户名 --password :数据库密码 --table :需要sqoop的表 --columns :表中的列 ...
mysql数据导入hbase
MySQL通过sqoop工具用命令将数据导入到hbase的代码文件
Flume导入文本文件到HBase
1. 用Java编写自定义的序列化类,通过jar形式放入flume/lib中 自定义类MinputHbase, 实现接口HbaseEventSerializer, 重写其所有方法 package com; import org.apache.flume.Context; import org.apache.flume.Event; import org.apache.flume.conf.C...
java从本地读文件并上传Hbase
有兴趣使用的请点下载链接 数据文件与源代码下载从本地文件读数据,按行操作String filePath = "/root/input_2"; File file=new File(filePath); InputStreamReader in_stream = new InputStreamReader(new FileInputStream(file)); BufferedReader
如何将excel表格数据使用图形化工具workbench导入mysql数据库中
第一次写博客,作为技术人员博客是必备的,对于整理自己的思路是非常有用的!!   第一次写博客,希望以后坚持下来。 首先workbench中是不能直接将excel文件导入的,这相比于front工具是一个非常大的缺点。 1.首先将excel转换为txt文件 xlsx文件另存为csv文件(此类文件中数字是用科学计数法表示的) 使用记事本打开csv文件,另存为txt文件(注意编码格
把txt原始数据导入到matlab
第一种方法: importdata max_out.txt; 这种方法导入的数据存储在”ans”变量中; 第二种方法: load max_out.txt; 这种方法导入的数据会存储在名字为”max_out”的变量中。...
将文件导入到HBase数据表中
楔子 学习了解 HBase 从HDFS读取数据,导入到HBase, 1.1 构建Mapper读取HDFS数据 import java.io.IOException; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.io.ImmutableBytesWritable; import org.a...
将txt文本数据导入到Oracle数据库中去
如果是txt文件的数据导入oracle中,数据量大的话用pl/sql会卡死,那么就要用到sqlload命令 首先需要将建立ctl格式的文件: load data     infile 'D:\rh2015_2.txt'     append into table jg_hum     fields terminated by '|'   OPTIONALLY ENCLOSED BY '
HBase导入TXT文件
1.文件导入HDFS 创建一个txt测试文件 (列与列之间用 ","分割) vi test.txt 将文件传入HDFS hadoop fs -put /user/training 查看目录下的文件 hadoop fs -ls /user/training 查看文件内容 hadoop fs -cat test.txt 2.在Hbase中新建表
如何将txt文件里的数据导入到sql数据表中(转)
一 个文本文件qtsj.txt,里面的数据如下:     59601720060705175010     59415620060705175010     59789320060705175010     59648320060705175010     61166020060705175710     60830120060705175710     60756120060705175710 
hive导入数据到hbase
背景 hive有一张表user_tag_detail,表中数据约1.3亿,需要将改表数据导入到hbase 尝试了两种方式 - 1、新建hive表hbase_user_tag_detail,关联hbase表user_tag_detail,将user_tag_detail数据导入hbase_user_tag_detail - 2、生成hfile,使用HBaseBulkLoad导入 官网文档 ...
如何把文本文档导入MYSQL数据库?
转载自:https://zhidao.baidu.com/question/407679601.html 方法如下,举例说明: 1、创建测试表,即为要被导入的表: create table person(  id int not null auto_increment,  name varchar(40) not null,  city varchar(20),
使用Sqoop从Postgresql中导入数据到HBase中
接前面的文章 “使用Sqoop从Postgresql中导入数据到Hive中”,今天看看怎样从 Postgresql 入数据到 HBase 中。 这里有一点需要注意的是 Sqoop 1.4.7 目前不支持 HBase 2.x,所以准备了一个 hbase 1.4.9 的环境来做测试。 配置 进入 sqoop 的 conf 目录,修改 sqoop-env.sh 文件,如下: #Set path to w...
Hive表数据导入到Hbase
修改hive的配置文件hive-site.xml,增加: hive.aux.jars.path file:///home/hadoop/hive-0.9.0/lib/hive-hbase-handler-0.9.0.jar,file:///home/hadoop/hive-0.9.0/lib/hbase-0.92.0.jar,file:////home/hadoop/hive
windows下把数据从oracle导入hbase
随着数据量的增大,oracle的查询速度就有点捉襟见肘,这个时候我们需要把数据从oracle数据库导入到hbase,然后使用hbase进行查询数据。 废话不多说,直接上代码.public class Getdata { private static Connection conn; private static Statement st; private ResultSet
Sqoop将MySQL数据库表中数据导入到HBase表中
问题导读:         1、--hbase-table、--hbase-row-key、--column-family及--hbase-create-table参数的作用?         2、Sqoop将关系型数据库表中数据导入HBase中,默认Rowkey是什么?         3、如果关系型数据库表中存在多关键字,该怎么办? 一、简介及部分重要参数介绍  
托VB中如何将MSFlexGrid数据导入到Excel中.txt
VB中如何将MSFlexGrid数据导入到Excel中.txt
数据导入终章:如何将HBase的数据导入HDFS?
我们的最终目标是将数据导入Hadoop,在之前的章节中,我们介绍了如何将传统关系数据库的数据导入Hadoop,本节涉及到了HBase。HBase是一种实时分布式数据存储系统,通常位于与Hadoop集群相同的硬件上,或者与Hadoop集群紧密相连,能够直接在MapReduce中使用HBase数据,或将其导入HDFS,这是选择HBase作为解决方案的巨大优势之一。 实践:将HBase数据导入HDFS...
phoenix 把CSV格式的数据导入到Hbase执行日志
[root@hadoop1 phoenix-4.8.2-HBase-1.2]# HADOOP_CLASSPATH=/opt/hbase-1.2.1/lib/hbase-protocol-1.2.1.jar:/etc/hbase/conf/  hadoop jar /opt/phoenix-4.8.2-HBase-1.2/phoenix-4.8.2-HBase-1.2-client.jar org.
Oracle数据迁移至HBase操作记录
Oracle数据迁移至HBase操作记录@(HBase)近期需要把Oracle数据库中的十几张表T级别的数据迁移至HBase中,过程中遇到了许多苦难和疑惑,在此记录一下希望能帮到一些有同样需求的兄弟。HBase表设计首先,是根据Oracle的数据规划HBase的表和表结构。 从业务上看,十几张表大概可以分为两大部分: 交易信息 客户操作 刚开始的计划是将所有表都导入HBase中
用sqoop将oracle数据导入Hbase 使用笔记
网上已经有很多关于这方面的资料,但是我在使用过程中也遇见了不少问题 1. sqoop 的环境我没有自己搭建  直接用的公司的 2. oracle 小白怕把公司环境弄坏了,自己用容器搭建了一个 docker pull docker.io/wnameless/oracle-xe-11g docker run -d -p 2022:22 -p 1521:1521 -p 8080:8080 -
数据导入HBase常用方法
作者 陈晨      http://www.csdn.net/article/2014-01-07/2818046 摘要:要使用Hadoop,需要将现有的各种类型的数据库或数据文件中的数据导入HBase。一般而言,有三种常见方式:使用HBase的API中的Put方法,使用HBase 的bulk load工具和使用定制的MapReduce Job方式。本文均有详细描述。 【编者按】要
txt内容通过另存为方式导入到word中
之前的程序可以把word内容通过另存为方式导入到txt中 直接使用这个程序,txt -> doc ,也可以导入到doc文件中,但是txt->docx , 导入到word2007就有问题 这时,改变保存参数设置就可以  vArgsSaveAs[10].vt        =   VT_BSTR;  vArgsSaveAs[10].bstrVal =     bstrSaveFile;
如何将一个TXT文档里内容导入到文本框里
第一个文件ajax_txt.asp的代码: (此页是AJAX异步提交txt文本文件的路径到ajax_txt_save.asp页面,并从ajax_txt_save.asp获取返回的数据) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <style type="text/css"> <!-- body,td,th { font-size: 12px; } body { margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; } --> </style> <script type="text/javascript"> <!-- //将用户输入异步提交到服务器 function ajaxSubmit(){ //获取文件浏览控件中选择的文件路径 var filesname=document.form1.FileName.value; if (filesname=="") { alert("请先选择要导入的txt文件!"); document.form1.FileName.focus(); return false; } //创建XMLHttpRequest对象 var xmlhttp; try{ xmlhttp=new XMLHttpRequest(); }catch(e){ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } //创建请求结果处理程序 xmlhttp.onreadystatechange=function(){ if (4==xmlhttp.readyState){ if (200==xmlhttp.status){ var dates=xmlhttp.responseText; //接收服务端返回的数据 var alldataarr; if (dates=="null") { alert('内容获取失败!'); } else { alert('已成功获取到txt文本文件中的内容!'); alldataarr = dates.split(","); document.form1.textarea1.value = alldataarr[0]; document.getElementById('num').innerHTML = alldataarr[1]; //清空上传域file document.getElementById('FileName').select(); document.selection.clear(); } }else{ alert("error"); } } } //打开连接,true表示异步提交 xmlhttp.open("post", "ajax_txt_save.asp", true); //当方法为post时需要如下设置http头 xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); //发送数据 xmlhttp.send("filesname="+escape(filesname)); } //--> </script> </head> <body> <div align="center"> <br><font color="#009900" size="3"><b>JS读取文本文件的内容并赋值给textarea控件</b></font><br><br> <form id="form1" name="form1" action="index.asp?Action=Write" method="post"> <input type="file" id="FileName" name="FileName" size="30"> <input type="button" name="button1" value="导入" onclick="ajaxSubmit();"><br><br> <textarea id="textarea1" name="textarea1" cols="46" rows="20"></textarea> <br><br> 已导入:<font color="#FF0000"><span id="num">0</span></font> 条记录<br><br><br> <input type="submit" name="Submit1" value="提交导入的内容到数据库"> </form> </div> </body> </html> 第二个文件ajax_txt_save.asp的代码: (此页是用ASP中的FSO来读取txt文本文件中的内容并输出,为ajax_txt.asp这个页面的AJAX异步获取提供数据) <% '//禁止缓存该页 让AJAX读取该页始终为最新而非过期缓存页 Response.Expires = 0 Response.Expiresabsolute = Now() - 1 Response.AddHeader "pragma","no-cache" Response.AddHeader "cache-control","private" Response.CacheControl = "no-cache" response.Charset="GB2312" '//数据返回的编码类型 显示中文数据必须 Dim objFSO Dim objText Dim ObjFile Dim strTextContent Dim objDrive '创建一个文件操作对象实例 Set objFSO = CreateObject("Scripting.FileSystemObject") '要打开的文件 ObjFile=trim(request("filesname")) '从文浏览控件中获取 IF objFSO.FileExists(ObjFile) then Set objText = objFSO.OpenTextFile(ObjFile,1) '循环读取数据 k=0 While not objText.AtEndOfStream '到文件的末尾 strTextContent = strTextContent & objText.ReadLine() & vbcrlf k=k+1 wend objText.Close response.write strTextContent & "," & k else strTextContent= "文件不存在" response.end() end if %> 以上代码经测试,100%能使用,且不受浏览器的安全级别限制,祝你好运!
如何将hbase的数据转移到MySQL;
import com.bing.tools.Constant; import java.io.File; import java.io.FileInputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.util.ArrayList; import java.util.HashMap...
数据从Postgresql导入Hbase中
下载sqoop 下载Postgresql jdbc驱动,拷入sqoop下lib中 执行 sqoop import --connect jdbc:postgresql://172.16.1.141:5432/DB_SERVER --query &quot;SELECT id,concat(f_mmsi,to_char(f_updatetime, 'YYYYMMHH12MISS')) as track...
如何将TXT数据导入Excel进行表格制作和数据分析
  Excel功能强大,是办公中数据分析的重要工具。本经验是教大家如何将TXT文档数据导入到Excel表格,方便继续进行数据编辑和分析。 工具/原料 TXT文档数据 EXCEL;本经验以Microsoft office Excel 2016为例 方法/步骤 1 首先要有txt文档数据,文档数据与数据之间有分隔符分开,可以用标点符、空格符或者Tab分隔符分开,如...
使用JAVA将Hadoop HDFS中的日志文件导入HBase中(一)
开发环境硬件环境:Centos 6.5 服务器3台(一台为Master节点,两台为Slave节点) 软件环境:Java 1.7.0_71、IDEA、Hadoop-2.6.2、hbase-1.1.4一、生成日志文件假设日志文件有六列,每列之间由空格间隔 例如:aaa 20.3.111.3 bbb user nothing 2016-05-01 www 22.3.201.7 ggg user no
Kettle 将Oracle数据导入HBase的注意事项
使用Kettle采集Oracle数据,导入到HBase。       Kettle是一个比较好用的ETL工具,个人感觉Kettle比Sqoop还要好用,主要是因为Kettle通过可视化,组件式拖拉配置就可以实现数据提取,转换、写入。而Sqoop 的shell 命令行真是不好用,而且Sqoop 2还不支持将关系型数据库的数据导入到HBase中,现在只支持导入到Hadoop。       Kett
HDFS数据导入到Hbase表
package com.lhjava.hbase; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hbase.client.Put; import org.apache.hadoop.hbase.io.ImmutableBytesWri...
如何通过txt文件批量导入数据到oracle数据库
可以通过对存储了大量记录的txt文件进行拆分处理形成数组,进而实现批量导入数据到数据库。
Hbase通过命令将数据批量导入的方法
抛砖引玉: hbase建表: hbase(main):003:0> create 'people','0' 将提前准备好的数据上传到hdfs: [hadoop@h71 ~]$ vi people.txt 1,jimmy,25,jiujinshan 2,tina,25,hunan [hadoop@h71 ~]$ hadoop fs -mkdir /bulkloa
将txt数据导入数据库
用java实现从txt文本文件批量导入数据至数据库 标签: 数据库java文本文件批量导入 2017-05-07 14:11 2231人阅读 评论(3) 收藏 举报 分类: 数据库(12) 今天同事让我准备一个项目的测试数据,要向一个表中插入上千条记录,并且保证每条记录内容不同,如果用手工一条一条插入肯定是不可能,也不会有哪个SB去
懒人创造世界------------如何将Excel数据导入到mysql的数据库当中
博主学时有限,不要和我说什么ODBC导入啊、写一个小脚本文件去导入之类的   ,想我这样懒的人是不获取做的。 许多时候项目发下来,给了好多好多的数据,放在一个Excel之中,这样不是最好的嘛,直接将数据从Excel插入到mySQL,简单高效适合我这种懒癌晚期患者。 首先,打开存放数据段的Excel文件,处理好所需要的数据,主要以第一范式为关键,处理好列的关系,将不必要的列都删除掉。然后将Exc
通过BulkLoad的方式快速导入海量数据到Hbase
摘要加载数据到HBase的方式有多种,通过HBase API导入或命令行导入或使用第三方(如sqoop)来导入或使用MR来批量导入(耗费磁盘I/O,容易在导入的过程使节点宕机),但是这些方式不是慢就是在导入的过程的占用Region资料导致效率低下,今天要讲的就是利用HBase在HDFS存储原理及MapReduce的特性来快速导入海量的数据 HBase数据在HDFS下是如何存储的?HBase中每张T...
从hdfs批量导出数据到hbase表中
将hdfs中的日志数据导入到hbase中。 打成jar包在服务器使用 hadoop jar xxx.jar 包名.类名            运行 需要将hbase类库加到hadoop的classpath中,在hadoop-env.sh文件中添加hbase类库 export HADOOP_CLASSPATH=/usr/local/hbase/lib/* 即可 package
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 如何学习java当中的类 学习java遗忘很大