spark sql与hive整合
来源:互联网 发布:毕业论文数据造假 编辑:程序博客网 时间:2024/04/27 14:06
小结
结构上Hive On Spark和SparkSQL都是一个翻译层,把一个SQL翻译成分布式可执行的Spark程序。Hive和SparkSQL都不负责计算。
hive编译
如果不是采用CDH在线自动安装和部署的话,可能需要对源码进行编译,使它能够兼容HIVE。
编译的方式也很简单,只需要在Spark_SRC_home(源码的home目录下)执行如下命令:
./make-distribution.sh --tgz -PHadoop-2.2 -Pyarn -DskipTests -Dhadoop.version=2.6.0-cdh5.4.4 -Phive
编译好了之后,会在lib目录下多几个jar包()
hive配置
编辑 $HIVE_HOME/conf/Hive-site.xml,增加如下内容:
<property> <name>hive.metastore.uris</name> <value>thrift://master:9083</value> <description>Thrift uri for the remote metastore. Used by metastore client to connect to remote metastore.</description></property>
启动hive metastore
$hive --service metastore &查看 metastore:$jobs[1]+ Running hive --service metastore &关闭 metastore:$kill %1kill %jobid,1代表job id
spark配置
将 $HIVE_HOME/conf/hive-site.xml copy或者软链 到 $SPARK_HOME/conf/将 $HIVE_HOME/lib/mysql-connector-java-5.1.12.jar copy或者软链到$SPARK_HOME/lib/copy或者软链$SPARK_HOME/lib/ 是方便spark standalone模式使用
启动spark-sql
1. standalone模式
./bin/spark-sql --master spark:master:7077 --jars /home/spark/spark-1.6.0/lib/mysql-connector-java-5.1.12.jar
2. yarn-client模式
./bin/spark-sql --master yarn-client --jars /home/spark/spark-1.6.0/lib/mysql-connector-java-5.1.12.jar执行 sql:select count(*) from people;
3. yarn-cluster模式
Cluster deploy mode 不支持的
./bin/spark-sql --master yarn-cluster --jars /home/spark/spark-1.6.0/lib/mysql-connector-java-5.1.12.jarError: Cluster deploy mode is not applicable to Spark SQL shell.Run with --help for usage help or --verbose for debug output...
启动 spark-shell
1. standalone模式
./bin/spark-shell --master spark:master:7077 --jars /home/spark/spark-1.6.0/lib/mysql-connector-java-5.1.12.jar
2. yarn-client模式
./bin/spark-shell --master yarn-client --jars /home/spark/spark-1.6.0/lib/mysql-connector-java-5.1.12.jarsqlContext.sql("from people SELECT count(appkey,name1,name2)").collect().foreach(println)
代码测试
代码:
import org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.sql.hive.HiveContextobject SqlHive { def main(args: Array[String]): Unit = { val conf=new SparkConf().setAppName("Spark-Hive").setMaster("local") val sc=new SparkContext(conf) val hiveContext = new HiveContext(sc) /* sqlContext.sql("CREATE TABLE IF NOT EXISTS people (id INT, name STRING, age INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' ") //这里需要注意数据的间隔符 sqlContext.sql("LOAD DATA INPATH '/user/liujiyu/spark/people.txt' INTO TABLE people "); sqlContext.sql(" SELECT * FROM jn1").collect().foreach(println) */ //通过HiveContext.table方法来直接加载Hive中的表而生成DataFrame hiveContext.sql("use hive") hiveContext.sql("DROP TABLE IF EXISTS people") hiveContext.sql("CREATE TABLE IF NOT EXISTS people(id INT, name STRING, age INT)") //当然也可以通过LOAD DATA INPATH去获得HDFS等上面的数据 到Hive(数据的移动) hiveContext.sql("LOAD DATA LOCAL INPATH '/home/sql/spark/people.txt' INTO TABLE people") //把本地数据加载到Hive中(数据的拷贝) hiveContext.sql("DROP TABLE IF EXISTS orders") hiveContext.sql("CREATE TABLE IF NOT EXISTS orders(peopleId INT, orderNo STRING)") hiveContext.sql("LOAD DATA LOCAL INPATH '/home/sql/spark/orders.txt' INTO TABLE orders") //使用join val resultDF = hiveContext.sql("SELECT p.name, p.age, o.orderNo" + "FROM people p JOIN orders o ON p.id=o.peopleId WHERE p.age > 18") //当删除该表时,磁盘上的数据也会被删除 hiveContext.sql("DROP TABLE IF EXISTS resultT") //通过saveAsTable的方式把DaraFrame中的数据保存到Hive数据仓库中,数据放在什么地方、元数据都是Hive管理的 resultDF.saveAsTable("resultT") //通过HivewContext的Table方法去读Hive中的Table并生成DaraFrame //读取的数据就可以进行机器学习、图计算、各种复杂ETL等操作 val dataFrameHive = hiveContext.table("resultT") dataFrameHive.show() sc.stop() }}
shell脚本:
./bin/spark-submit --class SparkSQLByScala.SparkSQL2Hive --master spark://slq1:7077 /home/spark/SqlHive.jar
0 0
- spark sql与hive整合
- spark整合hive和sql
- Spark SQL 整合Hive的使用
- Spark-SQL与hive整合【版本spark1.6.0+hive0.14】--Standalone模式
- Spark-Sql整合hive,在spark-sql命令和spark-shell命令下执行sql命令和整合调用hive
- 整合spark和hive
- Spark整合Hive
- Spark整合Hive
- Spark SQL 与 Spark SQL on Hive 区别
- 015-Spark SQL与 Hive集成
- spark-sql部署实现与Hive交互
- spark-sql部署实现与Hive交互
- Spark SQL与Hive的关系
- Spark-1.3.1与Hive整合实现查询分析
- Spark-1.3.1与Hive整合实现查询分析
- Spark-1.3.1与Hive整合实现查询分析
- Spark-1.3.1与Hive整合实现查询分析
- spark-sql与elasticsearch整合&测试
- 关于范式,写的真好
- Majority Element
- [面试] MPP数据库
- 不用AIDL,我用Messenger
- 测试大神的养成计划
- spark sql与hive整合
- Wechat--小开发
- Unix网络编程——常见辅助函数总结
- centos7 修改host名
- [LeetCode] 269. Alien Dictionary 解题报告
- 7. Reverse Integer Easy
- 11,ListView+SpringView+网络数据统一处理+基类的抽取
- leetcode week2
- Android文件操作 —— 6.0之后文件操作