pyspark:saveasnewapihadoopdataset()可以用作hbase的大容量加载吗?

hm2xizp9  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(453)

我们目前使用saveasnewapihadoopdataset()通过spark rdds(pyspark)将数据导入hbase表。
此函数是否通过mapreduce使用hbase批量加载功能?换句话说,直接导入hbase的saveasnewapihadoopdataset()是否等同于使用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)
6mzjoqzu

6mzjoqzu1#

不完全是。 RDD.saveAsNewAPIHadoopDataset 以及 RDD.saveAsNewAPIHadoopFile 做几乎相同的事情。他们的api只是有点不同。每一种都提供了不同的“机制vs策略”选择。

相关问题