3.4 Spark RDD Action操作6-saveAsHadoopFile、saveAsHadoopDataset
来源:互联网 发布:怎么在淘宝上开S音速店 编辑:程序博客网 时间:2024/06/13 12:26
1 saveAsHadoopFile
def saveAsHadoopFile(path: String, keyClass: Class[], valueClass: Class[], outputFormatClass: Class[_ <: OutputFormat[, ]], codec: Class[_ <: CompressionCodec]): Unit
def saveAsHadoopFile(path: String, keyClass: Class[], valueClass: Class[], outputFormatClass: Class[_ <: OutputFormat[, ]], conf: JobConf = …, codec: Option[Class[_ <: CompressionCodec]] = None): Unit
saveAsHadoopFile是将RDD存储在HDFS上的文件中,支持老版本Hadoop API。
可以指定outputKeyClass、outputValueClass以及压缩格式。
每个分区输出一个文件。
例子:
var rdd1 = sc.makeRDD(Array((“A”,2),(“A”,1),(“B”,6),(“B”,3),(“B”,7)))
import org.apache.hadoop.mapred.TextOutputFormat
import org.apache.hadoop.io.Text
import org.apache.hadoop.io.IntWritable
rdd1.saveAsHadoopFile(“/tmp/lxw1234.com/”,classOf[Text],classOf[IntWritable],classOf[TextOutputFormat[Text,IntWritable]])
rdd1.saveAsHadoopFile(“/tmp/lxw1234.com/”,classOf[Text],classOf[IntWritable],classOf[TextOutputFormat[Text,IntWritable]],
classOf[com.hadoop.compression.lzo.LzopCodec])
2 saveAsHadoopDataset
def saveAsHadoopDataset(conf: JobConf): Unit
saveAsHadoopDataset用于将RDD保存到除了HDFS的其他存储中,比如HBase。
在JobConf中,通常需要关注或者设置五个参数:
文件的保存路径、key值的class类型、value值的class类型、RDD的输出格式(OutputFormat)、以及压缩相关的参数。
##使用saveAsHadoopDataset将RDD保存到HDFS中
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import SparkContext._
import org.apache.hadoop.mapred.TextOutputFormat
import org.apache.hadoop.io.Text
import org.apache.hadoop.io.IntWritable
import org.apache.hadoop.mapred.JobConf
var rdd1 = sc.makeRDD(Array((“A”,2),(“A”,1),(“B”,6),(“B”,3),(“B”,7)))
var jobConf = new JobConf()
jobConf.setOutputFormat(classOf[TextOutputFormat[Text,IntWritable]])
jobConf.setOutputKeyClass(classOf[Text])
jobConf.setOutputValueClass(classOf[IntWritable])
jobConf.set(“mapred.output.dir”,”/tmp/lxw1234/”)
rdd1.saveAsHadoopDataset(jobConf)
结果:
hadoop fs -cat /tmp/lxw1234/part-00000
A 2
A 1
hadoop fs -cat /tmp/lxw1234/part-00001
B 6
B 3
B 7
##保存数据到HBASE
HBase建表:
create ‘lxw1234′,{NAME => ‘f1′,VERSIONS => 1},{NAME => ‘f2′,VERSIONS => 1},{NAME => ‘f3′,VERSIONS => 1}
例子:
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import SparkContext._
import org.apache.hadoop.mapred.TextOutputFormat
import org.apache.hadoop.io.Text
import org.apache.hadoop.io.IntWritable
import org.apache.hadoop.mapred.JobConf
import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.mapred.TableOutputFormat
import org.apache.hadoop.hbase.client.Put
import org.apache.hadoop.hbase.util.Bytes
import org.apache.hadoop.hbase.io.ImmutableBytesWritable
var conf = HBaseConfiguration.create()
var jobConf = new JobConf(conf)
jobConf.set(“hbase.zookeeper.quorum”,”zkNode1,zkNode2,zkNode3”)
jobConf.set(“zookeeper.znode.parent”,”/hbase”)
jobConf.set(TableOutputFormat.OUTPUT_TABLE,”lxw1234”)
jobConf.setOutputFormat(classOf[TableOutputFormat])
var rdd1 = sc.makeRDD(Array((“A”,2),(“B”,6),(“C”,7)))
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)
}
).saveAsHadoopDataset(jobConf)
##结果:
hbase(main):005:0> scan ‘lxw1234’
ROW COLUMN+CELL
A column=f1:c1, timestamp=1436504941187, value=\x00\x00\x00\x02
B column=f1:c1, timestamp=1436504941187, value=\x00\x00\x00\x06
C column=f1:c1, timestamp=1436504941187, value=\x00\x00\x00\x07
3 row(s) in 0.0550 seconds
注意:保存到HBase,运行时候需要在SPARK_CLASSPATH中加入HBase相关的jar包。
- 3.4 Spark RDD Action操作6-saveAsHadoopFile、saveAsHadoopDataset
- Spark算子:RDD行动Action操作(6)–saveAsHadoopFile、saveAsHadoopDataset
- Spark算子:RDD行动Action操作(6)–saveAsHadoopFile、saveAsHadoopDataset
- Spark算子:RDD行动Action操作(6)–saveAsHadoopFile、saveAsHadoopDataset
- RDD行动Action操作(6)–saveAsHadoopFile、saveAsHadoopDataset
- spark RDD算子(十一)之RDD Action 保存操作saveAsTextFile,saveAsSequenceFile,saveAsObjectFile,saveAsHadoopFile 等
- spark源码action系列-saveAsHadoopDataset
- 3.4 Spark RDD Action操作1-first、count、lookup、collect
- 3.4 Spark RDD Action操作2-take、top、takeOrdered
- 3.4 Spark RDD Action操作3-聚合-aggregate、fold、reduce
- 3.4 Spark RDD Action操作4-countByKey、foreach、foreachPartition、sortBy
- 3.4 Spark RDD Action操作5-saveAsTextFile、saveAsSequenceFile、saveAsObjectFile
- 3.4 Spark RDD Action操作7-saveAsNewAPIHadoopFile、saveAsNewAPIHadoopDataset
- 学习spark:三、RDD的action操作
- spark RDD transformation和action操作
- 【Spark】RDD操作详解4——Action算子
- 【Spark】RDD操作详解4——Action算子
- Spark算子:RDD行动Action操作(7)–saveAsNewAPIHadoopFile、saveAsNewAPIHadoopDataset
- 滴滴推出“宝贝专车”,提前2小时预约且不收额外费用
- 乌镇人机决战进行时,首战即决战!
- Ubuntu下pip3的安装、升级、卸载
- Err1055,出现这个问题往往是在执行sql语句时候,在最后一行会出现这个问题。
- Spring boot 多数据源配置(分配置文件和数据库表两种情况)
- 3.4 Spark RDD Action操作6-saveAsHadoopFile、saveAsHadoopDataset
- 背包问题——动态规划
- 数据算法之瞎扯淡
- java1.4、1.5
- ELA算法用于保险欺诈-伪造照片检测及EXIF信息显示
- 3.4 Spark RDD Action操作7-saveAsNewAPIHadoopFile、saveAsNewAPIHadoopDataset
- Angular 4入门教程系列:6:Tour Of Heroes之服务和依赖注入
- PAT乙级1017. A除以B(20)
- Ubuntu 17.10 已经发布,图解新功能