我试图以一种有效的方式将spark数据集存储到hbase。当我们尝试用java中的lambda做类似的事情时:
sparkDF.foreach(l->this.hBaseConnector.persistMappingToHBase(l,"name_of_hBaseTable") );
函数persistmappingtohbase使用hbase java客户机(put)存储在hbase中。
I get an exception: Exception in thread "main" org.apache.spark.SparkException: Task not serializable
然后我们尝试了这个:
sparkDF.foreachPartition(partition -> {
final HBaseConnector hBaseConnector = new HBaseConnector();
hBaseConnector.connect(hbaseProps);
while (partition.hasNext()) {
hBaseConnector.persistMappingToHBase(partition.next());
}
hBaseConnector.closeConnection();
});
这似乎是工作,但似乎相当低效,我猜是因为我们创建并关闭了Dataframe的每一行的连接。
将spark ds存储到hbase的好方法是什么?我看到ibm开发的连接器,但从未使用过。
1条答案
按热度按时间wnavrhmk1#
以下内容可用于将内容保存到hbase
我的数据库中有以下依赖项
build.sbt
文件