第69课:Spark SQL通过Hive数据源实战
2016-05-23 00:00
423 查看
摘要: Spark学习
本期内容:
1 Spark SQL操作Hive解析
2 Spark SQL操作Hive实战
关键代码如下:
本期内容:
1 Spark SQL操作Hive解析
2 Spark SQL操作Hive实战
关键代码如下:
/** * 第一:在目前企业级大数据Spark开发的时候,绝大多数采用的是Hive作为数据仓库的 * Spark提供了Hive的支持,Spark通过HiveContext可以直接操作Hive中的数据 * 基于HiveContext我们可以使用sql/hql两种方式来编写sql语句对Hive进行操作, * 包括创建表、删除表、往表里导入数据以及用sql语法构造各种sql语句对表中各种数据进行CRUD操作 * 第二:我们也可以直接通过saveAsTable的方式把DataFrame的数据保存到hive数据仓库 * 第三:可以直接通过HiveContext.table方法来直接加载Hive中的表而生成DataFrame */ /** * 把本地数据加载到Hive数据仓库中(背后实际上发生了数据的拷贝) * 当然也可以通过LOAD DATA INPATH去获取HDFS等上面的数据到Hive(此时发生了数据的移动) */ hiveContext.sql("DROP TABLE IF EXISTS peoplescores") hiveContext.sql("CREATE TABLE IF NOT EXISTS peoplescores(name STRING, score INT) " + "ROW FORMAT DELIMITED FIELDS TERMINATED BY '\\t' LINES TERMINATED BY '\\n'") hiveContext.sql("LOAD DATA LOCAL INPATH '/home/hduser/spark/examples/src/main/resources/peoplescore.txt' " + "INTO TABLE peoplescores") /** * 通过HiveContext使用join直接基于Hive中的两张表进行操作获得大于90分的人的name、age、score */ val resultDF = hiveContext.sql("select p.name,p.age,ps.score " + "from people p join peoplescores ps on p.name=ps.name " + "where ps.score>90") /** * 通过saveAsTable创建一张Hive Managed Table,数据的元数据和数据即将放的具体位置都是由Hive数据仓库进行管理的,当删除 * 该表的时候,数据也会一起被删除(磁盘上的数据不再存在) */ hiveContext.sql("DROP TABLE IF EXISTS peopleinformation") resultDF.write.saveAsTable("peopleinformation") /** * 使用HiveContext的table可以直接去读Hive数据仓库中的Table并生成DataFrame, * 接下来就可以进行机器学习、图计算、各种复杂ETL等操作; */ val dataFormHive = hiveContext.table("peopleinformation") dataFormHive.show()
相关文章推荐
- 详解HDFS Short Circuit Local Reads
- Spark RDD API详解(一) Map和Reduce
- 使用spark和spark mllib进行股票预测
- Hadoop_2.1.0 MapReduce序列图
- 使用Hadoop搭建现代电信企业架构
- 分享Hive的一份胶片资料
- Windows下Scala环境搭建
- Spark随谈——开发指南(译)
- 单机版搭建Hadoop环境图文教程详解
- Spark,一种快速数据分析替代方案
- Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别
- hadoop常见错误以及处理方法详解
- Windows7下安装Scala 2.9.2教程
- hadoop 单机安装配置教程
- hadoop的hdfs文件操作实现上传文件到hdfs
- hadoop实现grep示例分享
- Apache Hadoop版本详解
- linux下搭建hadoop环境步骤分享
- hadoop client与datanode的通信协议分析
- hadoop中一些常用的命令介绍