读取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
对整个分区的元素进行操作。
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()方法。