我们使用以下命令读取带有pyspark的hbase表。
from pyspark.sql.types import *
host=<Host Name>
port=<Port Number>
keyConv = "org.apache.spark.examples.pythonconverters.ImmutableBytesWritableToStringConverter"
valueConv = "org.apache.spark.examples.pythonconverters.HBaseResultToStringConverter"
cmdata_conf = {"hbase.zookeeper.property.clientPort":port, "hbase.zookeeper.quorum": host, "hbase.mapreduce.inputtable": "CMData", "hbase.mapreduce.scan.columns": "info:Tenure info:Age"}
cmdata_rdd = sc.newAPIHadoopRDD("org.apache.hadoop.hbase.mapreduce.TableInputFormat","org.apache.hadoop.hbase.io.ImmutableBytesWritable","org.apache.hadoop.hbase.client.Result",keyConverter=keyConv,valueConverter=valueConv,conf=cmdata_conf)
output = cmdata_rdd.collect()
output
我得到的结果如下(钥匙和年龄)
[(u'123', u'5'), (u'234', u'4'), (u'345', u'3'), (u'456', u'4'), (u'567', u'7'), (u'678', u'7'), (u'789', u'8')]
相反,我期待的是钥匙、任期和年龄。如果我只有任期列,那么它返回键和任期。但是如果添加更多的列,结果总是有key和age列。
有人能帮我们解决这个问题吗。?
注意:我们不熟悉这个工具
先谢谢你。
1条答案
按热度按时间w1jd8yoj1#
如果您正在进行原型设计,并且不想更新集群,那么查看happybase会很有用(https://happybase.readthedocs.org/en/latest/).
下面的代码实现了在不到一秒钟的时间内从集群中获取小型(9gig)hbase表'name\u hbase\u table'的技巧。