[英]How to put values into hbase table through happybase?
我的开发环境是centos7,hbase 1.2.5,happybase 1.1.0,python 2.7,PyCharm,hadoop 2.7.3,spark 2.1我正在开发一个大数据软件。 我需要将值放入HBase表中。 这些值来自Spark RDD。 以下是代码:
import happybase
from pyspark import SparkContext, SparkConf
connection = happybase.Connection('localhost')
table = connection.table('tablename')
conf = SparkConf().setAppName("myFirstSparkApp").setMaster("local")
sc = SparkContext(conf=conf)
distFile = sc.textFile("/inputFilePath/")
newLines = distFile.filter(lambda x: 'filter":' in x)
newLines = newLines.map(lambda line:line.split('"'))
# The following line is working. Insert a row into the table.
table.put(b'row-key0', {'billCode:': '222', 'trayCode:': '222', 'pipeline:': '333'})
# But the following line is not working. what is wrong? Why?
newLines.foreach(lambda x: table.put(b'row-key', {'billCode:': x[7], 'trayCode:': x[3], 'pipeline:': x[11]}))
但是最后一行代码不起作用。 错误消息是:
ImportError:没有名为cybin pickle的模块。PicklingError:无法序列化对象:ImportError:没有名为cybin的模块
我是spark + happybase + python的新开发人员。 怎么解决呢? 请您的帮助。 谢谢。
这是一个简单的例子。
import happybase
from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName("App").setMaster("local")
sc = SparkContext(conf=conf)
rdd = parallelize([("a","1"),("b","2")])
def func(x):
conn = happybase.Connection('localhost')
table = conn.table("table_name")
table.put(x[0],{"cf:c":x[1]})
conn.close()
rdd.foreach(func)
但并非十全十美,您可以参考http://spark.apache.org/docs/latest/streaming-programming-guide.html#design-patterns-for-using-foreachrdd祝您好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.