python - RDD 只有第一列值 : Hbase, PySpark

标签 python hadoop hbase bigdata pyspark

我们正在使用以下命令使用 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

我得到的结果如下。 ( key 和年龄)

[(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 、任期和年龄。如果我只有 Tenure 列,那么它会返回 Key 和 Tenure。但是如果添加更多列,结果总是有 Key 和 Age 列。

谁能帮我们解决这个问题?

注意:我们是这个工具的新手

提前谢谢你。

最佳答案

如果您正在制作原型(prototype)并且不想更新您的集群,那么查看 happybase ( https://happybase.readthedocs.org/en/latest/) 会很有用。

以下代码可以在一秒钟内从我的集群中获取我的小型 (9Gig) Hbase 表“name_Hbase_Table”。

import happybase
connection = happybase.Connection(host ='your.ip.cluster') #don't specify :port
table = connection.table('name_Hbase_Table')
def hbaseAccelerationParser(table): #create UDF to format data
    finalTable=[]
    for key, data in table.scan(): #don't need the key in my case
        line=[]
        for values in data.itervalues():
            line.append(values)
        finalTable.append(line)
    return finalTable
table =table.map(hbaseAccelerationParser) #capture data in desired format
table = sc.parallelize(table ,4) #put in RDD

关于python - RDD 只有第一列值 : Hbase, PySpark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31009988/

相关文章:

python - 两个二维数组之间 tensorflow 的计算集差异

python - 如何读取 Sphinx 扩展节点中的 conf.py 设置?

Hadoop Map Reduce 作业 : Class org. 找不到 apache.hive.hcatalog.mapreduce.HCatInputFormat

apache-spark - Parquet 如何确定使用哪种编码?

hadoop - 无法分区由HDFS支持的配置单元表

hbase - 当属性 writeBehindEnbled 设置为 true 时,插入率降低

hadoop - Hbase HMaster 未运行

python - 如何在Python 3中重用父类(super class)方法的变量?

python - 惰性延迟列表达到最大递归深度

hadoop - HDFS、HBase、Pig、Hive 和 Azkaban 之间的关系?