从 HBase 中的 HDFS 导入表

Posted

技术标签:

【中文标题】从 HBase 中的 HDFS 导入表【英文标题】:Import table from HDFS in HBase 【发布时间】:2015-11-09 15:38:17 【问题描述】:

我在 pig 中创建了一个表并将其存储在 hdfs 中:

STORE mapping INTO  'hdfs://localhost:9000/hbase/data/default/mapping' USING PigStorage ('\t');

在 hdfs 上运行 ls 命令,我得到了表:

bin/hdfs dfs -ls /hbase/data/default
Found 1 item
drwxr-xr-x   - hfu supergroup          0 2015-11-09 13:33 /hbase/data/default/mapping

但是在 HBase shell 中运行 list 命令时,表格没有出现。

我正在使用:

hbase-0.98.0-hadoop2
hadoop-2.6.1
pig-0.15.0

全部运行在一台虚拟机上

如何在 HBase 中导入表?

【问题讨论】:

【参考方案1】:

首先使用 HBaseHCatStorageHandler 或直接从 HBase shell 在 HBase 中创建表。

CREATE TABLE meters (col1 STRING, col2 STRING) STORED BY 'org.apache.hcatalog.hbase.HBaseHCatStorageHandler' TBLPROPERTIES ( 'hbase.table.name' = 'meters', 'hbase.columns.mapping' = 'd:col2', 'hcat.hbase.output.bulkMode' = 'true' ) ;

col1- 将是 HBase 表的 Rowkey col2- 将是列族“d”下的列限定符

现在使用STORE 命令将数据加载到此表中。

【讨论】:

我从 HBase shell 创建了一个 HBase 表,然后我尝试将 pig 表中的数据存储到 HBase。但是猪shell中的store命令在连接zookeeper后停止:[main-SendThread(localhost:2181)] INFO org.apache.zookeeper.ClientCnxn - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x150ec3d937d000a, negotiated timeout = 90000 出现错误“无法存储”

以上是关于从 HBase 中的 HDFS 导入表的主要内容,如果未能解决你的问题,请参考以下文章

导入 HDFS 数据至 HBase

如何通过 hdfs 导入/导出 hbase 数据(hadoop 命令)

使用BulkLoad从HDFS批量导入数据到HBase

将数据从 hdfs 导入到 hbase 是不是会创建一个副本

HBase结合MapReduce批量导入(HDFS中的数据导入到HBase)

使用 talend 或 sqoop 将数据从 hbase 导入 hdfs