将Spark df存储到HBase

时间:2017-11-27 09:29:39

标签: java sql apache-spark hbase

我试图以有效的方式将Spark DataSet存储到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();
});

这似乎工作但看起来效率很低,我猜是因为我们为数据帧的每一行创建并关闭了一个连接。

将火花DS存储到HBase的好方法是什么?我看到a connector developed by IBM但从未使用它。

0 个答案:

没有答案