spark 操作 spark-shell

读取HDFS 上文件命令,

spark.read.textFile("/user/ssy.097").count


spark.read.wholeTextFiles
SparkContext.wholeTextFiles 能够读取指定目录下的许多小文本文件


spark.read.textFile("/user/ssy.097").map(_.split("\u001,-1")).show           //相当于把每一行的内容看做一个map


spark.read.parquet("/user/ssy.097").createOrReplaceTempView("")      // createOrReplaceTempView注册为临时表   注册完临时表就可以写sql语句去查询你需要的信息了


val df = sqlContext.read.json("file:///usr/local/spark/examples/src/main/resources/people.json")  读取 JSON 格式的数据

DataFrames 处理结构化数据
df.select("name").show()    // 只显示 "name" 列
df.select(df("name"), df("age") + 1).show() // 将 "age" 加 1
df.filter(df("age") > 21).show()  //条件语句
df.groupBy("age").count().show()   // groupBy 操作

 SQL 语句来进行操作
df.registerTempTable("people")     // 将 DataFrame 注册为临时表 people
val result = sqlContext.sql("SELECT name, age FROM people WHERE age >= 13 AND age <= 19")  // 执行 SQL 查询


val linesWithSpark = textFile.filter(line => line.contains("Spark"))   // 筛选出包含 Spark 的行    contains包含


所谓的控制操作就是持久化
你能通过persist()或者cache()方法持久化一个rdd。首先,在action中计算得到rdd;然后,将其保存在每个节点的内存中。Spark的缓存是一个容错的技术-如果RDD的任何一个分区丢失,它 可以通过原有的转换(transformations)操作自动的重复计算并且创建出这个分区。

cache();

persist(); //保存RDD的依赖关系

checkpoint() //切断关系

调用 cache(),就可以将数据集进行缓存:




flatMap                 类似于map,但是输入数据项可以被映射到0个或多个输出数据集合中,所以函数func的返回值是一个数据项集合而不是一个单一的

                            数据项

mapPartitions      类似于map,但是该操作是在每个分区上分别执行,所以当操作一个类型为T的RDD时func的格式必须是

                            Iterator => Iterator。   即 mapPartitions需要获取到每个分区                  的迭代器,在函数中通过这个分区的迭代器

                            对整个分区的元素进行操作。

reduceByKey      使用给定的func,将(K,V)对格式的数据集中key相同的值进行聚集,其中func的格式必须为(V,V) => V。可选参数

                            numTasks可以指定reduce任务的数目。

reduce                 使用函数func聚集数据集中的元素,这个函数func输入为两个元素,返回为一个元素。这个函数应该符合结合律和交换了,
                            这样才能保证数据集中各个元素计算的正确性。

collect                  在驱动程序中,以数组的形式返回数据集的所有元素。通常用于filter或其它产生了大量小数据集的情况

take                     返回数据集中的前n个元素。

saveAsTextFile      将数据集中的元素以文本文件(或文本文件集合)的形式保存到指定的本地文件系统、HDFS或其它Hadoop支持的

                               文件系统中。Spark将在每个元素上调用toString方法,将数据元素转换为文本文件中的一行记录。

saveAsObjectFile   将数据集中的元素以简单的Java序列化的格式写入指定的路径。这些保存该数据的文件,

                               可以使用SparkContext.objectFile()进行加载。

        可以将RDD视作数据库中的一张表。其中可以保存任何类型的数据
        RDD是一种只读的、分区的记录集合。Spark借助RDD实现对类存的管理。

        直接从集合转化 sc.parallelize(List(1,2,3,4,5,6,7,8,9,10))
     从HDFS文件转化 sc.textFile("hdfs://")
  从本地文件转化 sc.textFile("file:/")


        如果想手动移除一个RDD,而不是等待该RDD被Spark自动移除,可以使用RDD.unpersist()方法。




你可能感兴趣的:(技术知识)