您的位置:首页 > 数据库

第69课:Spark SQL通过Hive数据源实战

2016-05-23 00:00 423 查看
摘要: Spark学习

本期内容:

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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spark hadoop scala Hive