zoukankan      html  css  js  c++  java
  • Spark External Datasets

      Spark能够从任何支持Hadoop的存储源来创建RDD,包括本地的文件系统,HDFS,Cassandra,Hbase,Amazon S3等。Spark支持textFile、SequenceFiles和任何其他的Hadoop的InputFormat格式的数据。

    1、textfile的RDD可以通过SparkContext’s textFile 的方法来创建,这个方法需要传递一个文件路径URL作为参数,然后读取对应文件的每一行的数据,形成一个以行数据为单位的集合。例如:

        scala> val distFile = sc.textFile("data.txt")

        distFile: RDD[String] = MappedRDD@1d4cee08

    2、textfile方法中,如果传入的是一个本地文件的URL,这必须保证Spark集群中其它机器也能够访问相同的URL。

    3、在Spark中,所有的输入方法(包括textFile)都支持文件夹、压缩文件、通配符。例如:

        textFile("/my/directory"), textFile("/my/directory/*.txt"), and textFile("/my/directory/*.gz").

    4、textFile方法中,还接受第二个参数,该参数是指定对应产生的RDD的分区数。默认情况下,Spark会根据HDFS的块的大小来作为分区的大小,即以块的数量作为分区的数目M。你可以设置大于这个分区数M,但是不能设置小于这个分区数M。

    5、除了textFile方法之外,Spark提供了如下的方法来加载外部数据:

      (1)SparkContext.wholeTextFiles

        该方法是读一个路径下所有的小文件,并且将每个小文件内容content作为value,文件的filename作为key,以pairs(key,value)的形式返回给客户端。该方法与textfile刚好相反,textfile是返    回每个文件的每一行的记录作为key,value的形式返回。

      (2)SparkContext’s sequenceFile[K, V]

        对于sequenceFiles,我们可以用sequenceFile[K,V]方法来加载外部的数据,其中K,V的类型是文件中key和value的类型。但这都是Hadoop的Writable(是一个接口类型)类型的子类。

      (3)SparkContext.hadoopRDD

        对于其他的Hadoop的InputFormats,你可以用hadoopRDD的方法来加载外部的数据源。该方法需要传入特定的 JobConf and input format class, key class and value class

    6、RDD的简单的保存方式:

      RDD.saveAsObjectFile and SparkContext.objectFile  support saving an RDD in a simple format consisting of serialized Java objects. While this is not as efficient as specialized     formats like Avro, it offers an easy way to save any RDD.

  • 相关阅读:
    Arduino-串口函数Serial
    声之翼——超声波模块
    Arduino入门教程--课前准备--Arduino驱动安装及1.0 IDE菜单介绍
    光之触角——光敏电阻、光敏二极管、光敏三极管与光照发生器
    reactjs--父组件调用子组件的内部方法(转载)
    React怎么创建.babelrc文件
    第一课 矩阵的行图像与列图像(麻省理工公开课:线性代数)【转载】
    单片机引脚间状态传递(非转载)
    sublime text2卸载和重新安装(转载)
    C语言头文件怎么写?(转载)
  • 原文地址:https://www.cnblogs.com/ljy2013/p/5063611.html
Copyright © 2011-2022 走看看