大数据IMF传奇行动绝密课程第58课:使用Java和Scala在IDE中开发DataFrame实战
2016-09-07 00:55
483 查看
使用Java和Scala在IDE中开发DataFrame实战
1、使用Java开发DataFrame2、使用Scala开发DataFrame
创建DataFrame的时候可以来自于其它RDD,来源于Hive表,以及其他数据来源,例如json文件
SQLContext只支持SQL一种方言(delax?),HiveContext支持SQL方言以及其它方言,通过设置都可以支持。
//F:\sparkData\people.json文件 {"name":"Michael"} {"name":"Andy","age":31} {"name":"Justin","age":20}
一、使用Java开发DataFrame
package com.tom.spark.SparkApps.sql; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.sql.DataFrame; import org.apache.spark.sql.SQLContext; /** * */ public class DataFrameOps { /** * @param args */ public static void main(String[] args) { //创建SparkConf用于读取系统配置信息并设置当前应用程序的名字 SparkConf conf = new SparkConf().setAppName("DataFrameOps").setMaster("local"); //创建JavaSparkContext对象实例作为整个Driver的核心基石 JavaSparkContext sc = new JavaSparkContext(conf); //设置日志级别为WARN sc.setLogLevel("WARN"); //创建SQLContext上下文对象用于SQL的分析 SQLContext sqlContext = new SQLContext(sc); //创建Data Frame,可以简单的认为DataFrame是一张表 DataFrame df = sqlContext.read().json("F:\\sparkData\\people.json"); //select * from table df.show(); //desc table df.printSchema(); //select name from table df.select(df.col("name")).show(); //select name, age+10 from table df.select(df.col("name"), df.col("age").plus(10)).show(); //select * from table where age > 21 df.filter(df.col("age").gt(21)).show(); //select age, count(1) from table group by age df.groupBy("age").count().show(); //df.groupBy(df.col("age")).count().show(); } }
以下为程序输出:
+----+-------+ | age| name| +----+-------+ |null|Michael| | 31| Andy| | 20| Justin| +----+-------+ root |-- age: long (nullable = true) |-- name: string (nullable = true) +-------+ | name| +-------+ |Michael| | Andy| | Justin| +-------+ +-------+----------+ | name|(age + 10)| +-------+----------+ |Michael| null| | Andy| 41| | Justin| 30| +-------+----------+ +---+----+ |age|name| +---+----+ | 31|Andy| +---+----+ +----+-----+ | age|count| +----+-----+ | 31| 1| |null| 1| | 20| 1| +----+-----+
二、使用Scala开发DataFrame
package com.tom.spark.sql import org.apache.spark.sql.SQLContext import org.apache.spark.{SparkConf, SparkContext} /** * */ object DataFrameOps { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("DataFrameOps").setMaster("local") val sc = new SparkContext(conf) sc.setLogLevel("WARN") val sqlContext = new SQLContext(sc) val df = sqlContext.read.json("F:\\sparkData\\people.json") df.show() df.printSchema() df.select("name").show() df.select(df("name"),df("age")+10).show() df.filter(df("age")>21).show() df.groupBy("age").count().show() } }
以下为程序输出
+----+-------+ | age| name| +----+-------+ |null|Michael| | 31| Andy| | 20| Justin| +----+-------+ root |-- age: long (nullable = true) |-- name: string (nullable = true) +-------+ | name| +-------+ |Michael| | Andy| | Justin| +-------+ +-------+----------+ | name|(age + 10)| +-------+----------+ |Michael| null| | Andy| 41| | Justin| 30| +-------+----------+ +---+----+ |age|name| +---+----+ | 31|Andy| +---+----+ +----+-----+ | age|count| +----+-----+ | 31| 1| |null| 1| | 20| 1| +----+-----+
spark-submit可以指定–file参数,可以把hive-site.xml中指定的hive文件夹添加进来
spark-submit --class com.dt.spark.sql.DataFrameOps --files /usr/local/hive/apache-hive-1.2.1-bin/conf/hive-site.xml --driver-class-path /usr/local/hive/apace-hive-1.2.1-bin/mysql-connector-java-5.1.35-bin.jar --master spark://Master:7077 /root/Documents/SparkApps/WordCount.jar
相关文章推荐
- 大数据IMF传奇行动绝密课程第60课:使用Java和Scala在IDE中实战RDD和DataFrame动态转换操作
- 大数据IMF传奇行动绝密课程第83课:透彻讲解使用Scala和Java两种方式实战Spark Streaming开发
- 大数据IMF传奇行动绝密课程第59课:使用Java和Scala在IDE中实战RDD和DataFrame转换操作
- 大数据IMF传奇行动绝密课程第97课:使用SparkStreaming+SparkSQL实现在线动态计算出特定时间窗口
- 大数据IMF传奇行动绝密课程第118课:Spark Streaming性能优化:如何获得和持续使用足够的集群计算资源
- 大数据IMF传奇行动绝密课程第98-99课:使用Spark Streaming实战对论坛网站动态行为的多维度分析
- 大数据IMF传奇行动绝密课程第53课:Spark性能优化第九季 Spark Tungsten内存使用彻底解密
- 大数据IMF传奇行动绝密课程第100-101课:使用Spark Streaming+Spark SQL+Kafka+FileSystem综合案例
- 大数据IMF传奇行动绝密课程第62课:Spark SQL下的Parquet使用最佳实践和代码实战
- 大数据IMF传奇行动绝密课程第22课:RDD的依赖关系彻底解密
- 大数据IMF传奇行动绝密课程第28课:Spark天堂之门
- 大数据IMF传奇行动绝密课程第14课:Spark RDD解密
- 大数据IMF传奇行动绝密课程第11课:彻底解密WordCount运行原理
- 第58课:使用Java和Scala在IDE中开发DataFrame实战学习笔记
- 大数据IMF传奇行动绝密课程第25课:Spark Sort-Based Shuffle内幕彻底解密
- 大数据IMF传奇行动绝密课程第13课:Spark内核架构解密
- 大数据IMF传奇行动绝密课程第24课:Spark Shuffle内幕彻底揭秘
- 大数据IMF传奇行动绝密课程第23课:从物理执行的角度透视Spark Job
- 大数据IMF传奇行动绝密课程第21课:从Spark架构中透视Job
- 大数据IMF传奇行动绝密课程第15课:RDD创建内幕彻底解密