大数据IMF传奇行动绝密课程第69课:Spark SQL通过Hive数据源实战
来源:互联网 发布:编程算法入门 编辑:程序博客网 时间:2024/04/27 09:35
Spark SQL通过Hive数据源实战
1、Spark SQL操作Hive解析
2、Spark SQL操作Hive实战
/** * Scala代码 */package com.tom.spark.sqlimport org.apache.spark.sql.hive.HiveContextimport org.apache.spark.{SparkConf, SparkContext}object SparkSQL2Hive { def main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster("local").setAppName("SparkSQL2Hive") val sc = new SparkContext(conf) /** * 第一:在目前企业级大数据Spark开发的时候绝大多数情况下是采用Hive作为数据仓库的; * Spark提供了Hive的支持功能,Spark通过HiveContext可以直接操作Hive中的数据; * 基于HiveContext我们可以使用SQL/HiveQL两种方式来编写SQL语句对Hive进行操作, * 包括创建表、删除表、向表里导入数据以及用SQL语法构造各种SQL语句对表中的数据进行Crud操作 * 第二:我们也可以直接通过saveAsTable的方式把DataFrame中的数据保存到Hive数据仓库中 * 第三:可以直接通过HiveContext.table方法来直接加载Hive中的表而生成DataFrame */ val hiveContext = new HiveContext(sc) hiveContext.sql("use hive") //使用Hive数据仓库中的hive数据库 hiveContext.sql("DROP TABLE IF EXISTS people") //删除同名的表 hiveContext.sql("CREATE TABLE IF NOT EXISTS people(name STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n'") //创建自定义的表 /** * 把本地数据加载到Hive数据仓库中(背后实际上发生了数据的拷贝) * 当然也可以通过LOAD DATA INPATH去获得HDFS等上面的数据到Hive(此时发生了数据的移动) */ hiveContext.sql("LOAD DATA LOCAL INPATH 'F:/sparkData/people.txt' INTO TABLE people") hiveContext.sql("DROP TABLE IF EXISTS peoplescores") hiveContext.sql("CREATE TABLE IF NOT EXISTS people(name STRING, score INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n'") hiveContext.sql("LOAD DATA LOCAL INPATH 'F:/sparkData/peoplescores.txt' INTO TABLE people") /** * 通过HiveContext使用join直接基于Hive中的两张表进行操作获得大于90分的人的name, age, score */ val resultDF = hiveContext.sql("SELECT pi.name,pi.age,ps.score FROM people pi JOIN peoplescores ps " + "ON pi.name=ps.name WHERE ps.score>90") /** * 通过saveAsTable创建一张Hive Managed Table,数据的元数据和数据即将放的具体位置都是 * 由Hive数据仓库进行管理的,当删除该表的时候,数据也会一起被删除(磁盘上的数据不再存在) */ hiveContext.sql("DROP TABLE IF EXISTS peopleinformationresult") resultDF.saveAsTable("peopleinformationresult") /** * 使用HiveContext的table可以直接去读Hive数据仓库中的Table并生成DataFrame, * 接下来就可以进行机器学习、图计算、各种复杂ETL等操作 */ val dataFromHive = hiveContext.table("peopleinformationresult") dataFromHive.show() }}
0 0
- 大数据IMF传奇行动绝密课程第69课:Spark SQL通过Hive数据源实战
- 大数据IMF传奇行动绝密课程第57课:Spark SQL on Hive配置及实战
- 大数据IMF传奇行动绝密课程第67课:spark SQL案例综合实战
- 大数据IMF传奇行动绝密课程第73课:Spark SQL Thrift Server实战
- 大数据IMF传奇行动绝密课程第68课:Spark SQL通过JDBC操作MySQL
- 大数据IMF传奇行动绝密课程第74课:Hive on Spark大揭秘
- 大数据IMF传奇行动绝密课程第61课:Spark SQL数据加载和保存内幕深度解密实战
- 大数据IMF传奇行动绝密课程第70课:Spark SQL内置函数解密与实战
- 大数据IMF传奇行动绝密课程第71课:Spark SQL窗口函数解密与实战
- 大数据IMF传奇行动绝密课程第72课:Spark SQL UDF和UDAF解密与实战
- 大数据IMF传奇行动绝密课程第75-79课:Spark SQL基于网站Log的综合案例实战
- 大数据IMF传奇行动绝密课程第80课:Spark SQL网站搜索综合案例实战
- 大数据IMF传奇行动绝密课程第65课:Spark SQL下Parquet深入进阶
- 大数据IMF传奇行动绝密课程第55课:60分钟从零起步驾驭Hive实战
- 大数据IMF传奇行动绝密课程第100-101课:使用Spark Streaming+Spark SQL+Kafka+FileSystem综合案例
- 大数据IMF传奇行动绝密课程第86课:SparkStreaming数据源Flume实际案例分享
- 大数据IMF传奇行动绝密课程第48课:Spark性能优化第四季
- 大数据IMF传奇行动绝密课程第56课:揭秘Spark SQL和DataFrame的本质
- Android基础之Activity栈式管理
- c语言可变参宏函数实现打印Debug信息
- FormData实现上传多图片,学习使用FormData
- javaweb的一个增删查改的小案例(续)
- 网易云课堂 Linux内核分析(三)
- 大数据IMF传奇行动绝密课程第69课:Spark SQL通过Hive数据源实战
- STL源码剖析(一)-vector
- 头疼的算法与数据结构——循环链表详解
- 循环队列(C/C++)
- HDU 1789
- nginx+tomcat+ssl
- Golang SimpleHTTPServer
- Python中的模块
- PKI及Blockchain-Base PKI概述