saveas java_Spark算子:RDD行动Action操作(7)–saveAsNewAPIHadoopFile、saveAsNewAPIHadoopDataset...

本文介绍了Spark中的saveAsNewAPIHadoopFile和saveAsNewAPIHadoopDataset算子,用于将RDD数据保存到HDFS和HBase。saveAsNewAPIHadoopFile使用新版本Hadoop API写入HDFS,而saveAsNewAPIHadoopDataset则适用于HBase写入。通过示例展示了如何配置和使用这两个函数。
摘要由CSDN通过智能技术生成

关键字:Spark算子、Spark函数、Spark RDD行动Action、Spark RDD存储操作、saveAsNewAPIHadoopFile、saveAsNewAPIHadoopDataset

saveAsNewAPIHadoopFile

def saveAsNewAPIHadoopFile[F <: outputformat v string fm: classtag unit>

def saveAsNewAPIHadoopFile(path: String, keyClass: Class[_], valueClass: Class[_], outputFormatClass: Class[_ <: outputformat _ conf: configuration="self.context.hadoopConfiguration):" unit>

saveAsNewAPIHadoopFile用于将RDD数据保存到HDFS上,使用新版本Hadoop API。

用法基本同saveAsHadoopFile。

import org.apache.spark.SparkConf

import org.apache.spark.SparkContext

import SparkContext._

import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat

import org.apache.hadoop.io.Text

import org.apache.hadoop.io.IntWritable

var rdd1 = sc.makeRDD(Array(("A",2),("A",1),("B",6),("B",3),("B",7)))

rdd1.saveAsNewAPIHadoopFile("/tmp/lxw1234/",classOf[Text],classOf[IntWritable],classOf[TextOutputFormat[Text,IntWritable]])

saveAsNewAPIHadoopDataset

def saveAsNewAPIHadoopDataset(conf: Configuration): Unit

作用同saveAsHadoopDataset,只不过采用新版本Hadoop API。

以写入HBase为例:

HBase建表:

create ‘lxw1234′,{NAME => ‘f1′,VERSIONS => 1},{NAME => ‘f2′,VERSIONS => 1},{NAME => ‘f3′,VERSIONS => 1}

完整的Spark应用程序:

package com.lxw1234.test

import org.apache.spark.SparkConf

import org.apache.spark.SparkContext

import SparkContext._

import org.apache.hadoop.hbase.HBaseConfiguration

import org.apache.hadoop.mapreduce.Job

import org.apache.hadoop.hbase.mapreduce.TableOutputFormat

import org.apache.hadoop.hbase.io.ImmutableBytesWritable

import org.apache.hadoop.hbase.client.Result

import org.apache.hadoop.hbase.util.Bytes

import org.apache.hadoop.hbase.client.Put

object Test {

def main(args : Array[String]) {

val sparkConf = new SparkConf().setMaster("spark://lxw1234.com:7077").setAppName("lxw1234.com")

val sc = new SparkContext(sparkConf);

var rdd1 = sc.makeRDD(Array(("A",2),("B",6),("C",7)))

sc.hadoopConfiguration.set("hbase.zookeeper.quorum ","zkNode1,zkNode2,zkNode3")

sc.hadoopConfiguration.set("zookeeper.znode.parent","/hbase")

sc.hadoopConfiguration.set(TableOutputFormat.OUTPUT_TABLE,"lxw1234")

var job = new Job(sc.hadoopConfiguration)

job.setOutputKeyClass(classOf[ImmutableBytesWritable])

job.setOutputValueClass(classOf[Result])

job.setOutputFormatClass(classOf[TableOutputFormat[ImmutableBytesWritable]])

rdd1.map(

x => {

var put = new Put(Bytes.toBytes(x._1))

put.add(Bytes.toBytes("f1"), Bytes.toBytes("c1"), Bytes.toBytes(x._2))

(new ImmutableBytesWritable,put)

}

).saveAsNewAPIHadoopDataset(job.getConfiguration)

sc.stop()

}

}

注意:保存到HBase,运行时候需要在SPARK_CLASSPATH中加入HBase相关的jar包。

更多关于Spark算子的介绍,可参考 Spark算子系列文章 :

如果觉得本博客对您有帮助,请 赞助作者 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值