HDFS导出数据到HBase的ROW VALUE设置tricks

2019-03-28 13:21|来源: 网络

在做Hadoop的编程时,有时会用到HBase,常常涉及到把HDFS上面的数据导入到HBase中,在这个操作中,row的设置比较重要,如果几条记录的row值一样,同时列簇也一样的话,那么后面的数据就会覆盖前面的数据,比如这样:

比如现在有这样的一个操作:

我要把下面的数据导入HBase:

  1. 1,101,5.0 
  2. 1,102,3.0 
  3. 1,103,2.5 
  4. 2,101,2.0 
  5. 2,102,2.5 
  6. 2,103,5.0 
  7. 2,104,2.0 
  8. 3,101,2.5 
  9. 3,104,4.0 
  10. 3,105,4.5 
  11. 3,107,5.0 
  12. 4,101,5.0 
  13. 4,103,3.0 
  14. 4,104,4.5 
  15. 4,106,4.0 
  16. 5,101,4.0 
  17. 5,102,3.0 
  18. 5,103,2.0 
  19. 5,104,4.0 
  20. 5,105,3.5 
  21. 5,106,4.0 

如果拿第一列作为row值的话,那么最终导入的数据只有5条记录的信息了,如何才能把这21条记录全部导入HBase呢

第一个想法,把文件偏移值作为一条记录的row,这样每条记录的row就都不同了,这样可以,但是当文件偏大的时候,这样存储就会存在问题,而且row值之间相差很大,如果可以做到row是按照1递增的话,那么就可以减少很多数据了。

相关问答

更多
  • /hbase目录下
  • 如果要从一个hbase群集导出表并将其导入另一个群集,请使用以下任一方法: 使用Hadoop 出口 $ bin/hadoop jar export \ [ [ []] 注意:将hdfs中的输出目录从源复制到目标群集 进口 $ bin/hadoop jar import < ...
  • 默认情况下,HBase会选择复制因子3.要指定复制因子,请在hbase-site.xml中添加以下属性 dfs.replication 1 我必须更新所有区域服务器上的hbase-site.xml 。 By default HBase will pick replication factor as 3. To specify replication factor add following p ...
  • 所有你需要知道的是在堆栈跟踪的这一行: 导致:org.apache.hadoop.security.AccessControlException:权限被拒绝:user = hbase,access = WRITE,inode =“/”:vagrant:supergroup:drwxr-xr-x 用户hbase没有权限写入HDFS根目录( / ),因为它属于vargrant并被设置为只允许所有者写入。 使用hadoop fs -chmod来修改权限。 编辑: 您也可以成功创建目录/hbase并将hbase用户 ...
  • 你需要保留所有数据: out = strided(x,shape=(x.size-L+1,L),strides=(n,n)) 对于 [[2 3 1] [3 1 0]] strided不检查访问是否在范围内,因此如果出现错误,一切都会发生。 you need to keep all the data : out = strided(x,shape=(x.size-L+1,L),strides=(n,n)) For [[2 3 1] [3 1 0]] strided don't check that ...
  • 是的,它会将导入数据的副本存储在HDFS中(如StoreFiles / HFiles),因为HBase只能使用自己的文件集进行操作。 也许你会发现这个很好的概述很有趣。 您可以直接使用存储在HDFS中的数据进行操作,而无需使用EXTERNAL HIVE表将其导入HBase: CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT, page_url STRING, referrer_url STRING, ip STRING ...
  • HDFS只是一个分布式文件系统,如果不通过中间组件,则无法查询文件。 Hbase是一个nosql数据库,可以将数据保存在HDFS上,当您需要随机访问数据时使用它。 如果要将文件按原样存储在HDFS上并进行查询,可以使用Hive在其上创建外部表。 HDFS is just a distributed file system, you cannot query your files without passing by an intermidiate component. Hbase is a nosql da ...
  • 1)在HBASE之上将Spark分层而不是仅使用HBASE带来了哪些附加功能? 它只取决于程序员的能力,还是有任何性能原因可以做到这一点? Spark有什么东西可以做,HBASE完全不能做? 在Splice Machine,我们使用Spark在HBase之上进行分析。 HBase没有执行引擎,spark在HBase(中级结果,关系代数等)之上提供了一个称职的执行引擎。 HBase是一个MVCC存储结构,Spark是一个执行引擎。 它们是彼此的天然补充。 2)从上一个问题出发,何时应该在HDFS和SPARK之 ...
  • 在${base.rootdir}/data我们有与名称空间和表名相关的子目录。 例如,假设我们在hbase-site.xml有这个配置 hbase.rootdir hdfs://hadoop:8020/apps/hbase 我们有名为MyFirstNamespace的MyTable1,MyTable2,所以hdfs上的目录结构是: /apps/hbase/data/MyFirs ...
  • Sqoop的直接连接器通常不支持HBase,这绝对是MySQL直连接头的情况。 如果需要将数据导入HBase,则应删除--direct选项。 Sqoop's direct connectors usually do not support HBase and this is definitely the case for MySQL direct connector. You should drop the --direct option if you need import data into HBase ...