PySpark:可以将saveAsNewAPIHadoopDataset()用作HBase的批量加载吗?

时间:2015-08-24 06:21:55

标签: python hadoop apache-spark hbase bulkloader

我们目前通过使用saveAsNewAPIHadoopDataset()通过Spark RDDs(pyspark)将数据导入HBase表。

此功能是否通过mapreduce使用HBase批量加载功能?换句话说,saveAsNewAPIHadoopDataset()直接导入HBase,相当于使用saveAsNewAPIHadoopFile()将Hfiles写入HDFS,然后调用org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles加载到HBase?

以下是我们的HBase加载例程的示例片段:

conf = {"hbase.zookeeper.quorum": config.get(gethostname(),'HBaseQuorum'),
        "zookeeper.znode.parent":config.get(gethostname(),'ZKznode'),
        "hbase.mapred.outputtable": table_name,
        "mapreduce.outputformat.class": "org.apache.hadoop.hbase.mapreduce.TableOutputFormat",
        "mapreduce.job.output.key.class": "org.apache.hadoop.hbase.io.ImmutableBytesWritable",
        "mapreduce.job.output.value.class": "org.apache.hadoop.io.Writable"}

keyConv = "org.apache.spark.examples.pythonconverters.StringToImmutableBytesWritableConverter"
valueConv = "org.apache.spark.examples.pythonconverters.StringListToPutConverter"

spark_rdd.saveAsNewAPIHadoopDataset(conf=conf,keyConverter=keyConv,valueConverter=valueConv)

1 个答案:

答案 0 :(得分:2)

不完全是。 RDD.saveAsNewAPIHadoopDatasetRDD.saveAsNewAPIHadoopFile几乎完全相同。他们的API有点不同。每个提供一个不同的机制与政策'选择。