标签:
缓存
Spark 支持在集群范围内将数据集缓存至每一个节点的内存中,可避免数据传输,当数据需要重复访问时这个特征非常有用,例如查询体积小的“热”数据集,或是运行如 PageRank 的迭代算法。调用 cache(),就可以将数据集进行缓存:
linesWithSpark.cache()
Spark SQL 和 DataFrames
Spark SQL 是 Spark 内嵌的模块,用于结构化数据。
在 Spark 程序中可以使用 SQL 查询语句或 DataFrame API。
DataFrames 和 SQL 提供了通用的方式来连接多种数据源,支持 Hive、Avro、Parquet、ORC、JSON、和 JDBC,并且可以在多种数据源之间执行 join 操作。
Spark SQL 的功能是通过 SQLContext 类来使用的,而创建 SQLContext 是通过 SparkContext 创建的。
val df = sqlContext.read.json("file:///usr/local/spark/examples/src/main/resources/people.json")// df: org.apache.spark.sql.DataFrame = [age: bigint, name: string]df.show() // 输出数据源内容// +----+-------+// | age| name|// +----+-------+// |null|Michael|// | 30| Andy|// | 19| Justin|// +----+-------+
DataFrames 处理结构化数据的一些基本操作:
df.select("name").show() // 只显示 "name" 列// +-------+// | name|// +-------+// |Michael|// | Andy|// | Justin|// +-------+df.select(df("name"), df("age") + 1).show() // 将 "age" 加 1// +-------+---------+// | name|(age + 1)|// +-------+---------+// |Michael| null|// | Andy| 31|// | Justin| 20|// +-------+---------+df.filter(df("age") > 21).show() # 条件语句// +---+----+// |age|name|// +---+----+// | 30|Andy|// +---+----+df.groupBy("age").count().show() // groupBy 操作// +----+-----+// | age|count|// +----+-----+// |null| 1|// | 19| 1|// | 30| 1|// +----+-----+
也可以使用 SQL 语句来进行操作:
df.registerTempTable("people") // 将 DataFrame 注册为临时表 peopleval result = sqlContext.sql("SELECT name, age FROM people WHERE age >= 13 AND age <= 19") // 执行 SQL 查询result.show() // 输出结果// +------+---+// | name|age|// +------+---+// |Justin| 19|// +------+---+
更多的功能可以查看完整的 DataFrames API ,此外 DataFrames 也包含了丰富的 DataFrames Function 可用于字符串处理、日期计算、数学计算等。
转载参考自:http://www.powerxing.com/spark-quick-start-guide/
标签:
原文地址:http://www.cnblogs.com/iathena/p/5615741.html