【发布时间】:2016-01-26 19:30:07
【问题描述】:
我的Hbase表有3000万条记录,每条记录都有raw:sample列,raw是columnfamily sample是column。这个栏目很大,大小从几KB到50MB。当我运行下面的 Spark 代码时,它只能得到 40000 条记录,但我应该得到 3000 万条记录:
val conf = HBaseConfiguration.create()
conf.set("hbase.zookeeper.quorum", "10.1.1.15:2181")
conf.set(TableInputFormat.INPUT_TABLE, "sampleData")
conf.set(TableInputFormat.SCAN_COLUMNS, "raw:sample")
conf.set("hbase.client.keyvalue.maxsize","0")
val hBaseRDD = sc.newAPIHadoopRDD(conf, classOf[TableInputFormat],classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable],classOf[org.apache.hadoop.hbase.client.Result])
var arrRdd:RDD[Map[String,Object]] = hBaseRDD.map(tuple => tuple._2).map(...)
现在我通过先获取 id 列表然后迭代 id 列表以通过 Spark foreach 中的纯 Hbase java 客户端获取列 raw:sample 来解决此问题。
请有任何想法,为什么我无法通过 Spark 获得所有列 raw:sample,是因为该列太大了吗?
前几天我的一个zookeeper节点和datanodes宕机了,但是我很快就修好了,因为replica是3,是这个原因吗?想如果我运行 hbck -repair 会有所帮助,非常感谢!
【问题讨论】:
标签: hadoop apache-spark mapreduce hbase