spark sql 对接 HDFS
上一篇博客我向大家介绍了如何快速地搭建spark run on standalone,下面我将介绍saprk sql 如何对接 hdfs
我们知道,在spark shell 中操作hdfs 上的数据是很方便的,但是操作也未免过于繁琐,幸好spark 还想用户提供另外两种操作 spark sql 的方式
一 spark-sql
启动方式也比较简单
如果不添加 hive.metastore.warehouse.dir hiveconf 这个参数,则启动的spark sql 是基于本地文件的,默认为 file:/user/hive/warehouse(这种模式我个人是不大建议的)
/opt/spark-1.3.-bin-hadoop2./bin/spark-sql --master spark://ubuntu1:7800 --driver-cores 1 --driver-java-options "-Dspark.driver.port=4050"
--master 这个是必须的,否则后面执行的sql 都只会在当前一个进程计算,性能非常差,简单测试测试sql 语句倒还行
后面填写spark master 的URL
--driver-cores 这个参数是指定运行是CPU的最大核数
--driver-java-options 这个是启动sparak sql 服务时,需要添加的jvm 参数, spark.driver.port 是指定一个端口,具体什么用途,我还不是非常了解,望告知!
启动的spark sql 基于hdfs 的方法
bin/spark-sql --master spark://ubuntu1:7800 --driver-cores 1 --driver-java-options "-Dspark.driver.port=4050" --hiveconf "hive.metastore.warehouse.dir=hdfs://ubuntu1:9000/user/hive/warehouse"
--hiveconf 参数是添加加载hive 模块时,需要调整的参数 , hive.metastore.warehouse 则是通知hive 模块,后面spark sql 的数据都是存储在HDFS 中。其中hdfs://ubuntu1:9000 是HDFS 的URL
注意:
在spark 2.0.1 中,--hiveconf "hive.metastore.warehouse" 参数已经不再生效,用户应该使用
--conf spark.sql.warehouse.dir=hdfs://HOSTNAME:9000/user/hive/warehouse 命令进行代替
正确登陆spark-sql 后,就能像在hive 中执行那样,直接输入sql 语句即可
测试一下
spark-sql> create table test (id int , name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE ;
向表中导入本地文件
LOAD DATA LOCAL INPATH '/opt/spark-1.3.1-bin-hadoop2.6/test.csv' INTO TABLE test;
向表中导入HDFS 文件
LOAD DATA INPATH 'hdfs://ubuntu1:9000/user/hive/warehouse/test.csv' INTO TABLE test;
两个test.csv 文件都是
|chen
|fool
查询
select * from test;
然后它就打一大堆的执行信息,最后它会显示执行成功了。
我个人觉得这个方法还不够赞,因为spark 还提供了另一种更犀利操作sql 的方法
二 thriftserver
由于现在hive 的metastore 并没有使用第三方数据库,所以只能支持一个用户操作元数据,在退出刚才的spark-sql 后,我们启动thriftserver
/opt/test_spark/spark-1.3.-bin-hadoop2./sbin/start-thriftserver.sh --master spark://ubuntu1:7800 --driver-java-options "-Dspark.driver.port=4050" --hiveconf "hive.server2.thrift.port=11000" --hiveconf "hive.metastore.warehouse.dir=hdfs://ubuntu1:9000/user/hive/warehouse"
参数和上面的相同,我就不再一一解释了,只有
--hiveconf hive.server2.thrift.port=11000 与上面不同,这个参数是指定thriftserver 端口,默认是10000
启动thriftserver 后,我们可以通过netstat 查看端口是否被正常启动了
netstat -nap |grep
netstat -nap |grep
然后我们在登陆 beeline 界面
/opt/test_spark/spark-1.3.-bin-hadoop2./bin/beeline --hiveconf hive.server2.thrift.port= --hiveconf "hive.metastore.warehouse.dir=hdfs://ubuntu1:9000/user/hive/warehouse"
登陆后,我们需要先连接上 thriftserver
!connect jdbc:hive2://localhost:11000
连接后,我们就能自由操作数据了
show tables;
+------------+--------------+
| tableName | isTemporary |
+------------+--------------+
| test | false |
+------------+--------------+
这个是刚才在spark-sql 上建立的表,并且刚才的数据也在,我们利用它来测试一下
select * from test;
+-----+-------+
| id | name |
+-----+-------+
| 1 | chen |
| 2 | fool |
| 1 | chen |
| 2 | fool |
+-----+-------+
输入非常正常,并且操作界面也非常的清爽。
退出这个beeline 界面,命令比较奇怪
!quit
大家也可以通过下面命令获得帮助信息
!help
spark sql 对接 HDFS的更多相关文章
- 通过spark sql 将 hdfs上文件导入到mongodb
功能:通过spark sql 将hdfs 中文件导入到mongdo 所需jar包有:mongo-spark-connector_2.11-2.1.2.jar.mongo-java-driver-3.8 ...
- spark sql 的metastore 对接 postgresql
本教程记录 spark 1.3.1 版本的thriftserver 的metastore 对接 postgresql postgresql 的编译,参考:http://www.cnblogs.com/ ...
- 通过Spark SQL关联查询两个HDFS上的文件操作
order_created.txt 订单编号 订单创建时间 -- :: -- :: -- :: -- :: -- :: order_picked.txt 订单编号 订单提取时间 -- :: ...
- 大数据技术之_19_Spark学习_03_Spark SQL 应用解析 + Spark SQL 概述、解析 、数据源、实战 + 执行 Spark SQL 查询 + JDBC/ODBC 服务器
第1章 Spark SQL 概述1.1 什么是 Spark SQL1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 DataFrame1.2.3 DataS ...
- 1. Spark SQL概述
1.1 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用 它是将Hive SQL转换成 ...
- 第1章 Spark SQL概述
第1章 Spark SQL概述 1.1 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作 ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- Spark SQL Example
Spark SQL Example This example demonstrates how to use sqlContext.sql to create and load a table ...
- spark streaming 对接kafka记录
spark streaming 对接kafka 有两种方式: 参考: http://group.jobbole.com/15559/ http://blog.csdn.net/kwu_ganymede ...
随机推荐
- wcf系列(一)--- 寄宿方式
一.自我寄宿(self-hosting) 1.wcf采用基于终结点(Endpoint)的通信手段:终结点由:地址(Address)+绑定(Binding)+契约(Contract)组成: Enpoi ...
- Cocos2d-x如何添加新场景及切换新场景(包括场景特效)
做了一天多的工作终于把此功能搞定了,实际上添加新场景花费不了多少时间,时间主要花在切换到另一个场景的实现上,主要原因是编译时出现了一个错误,百思不得其解,后来经过查资料不断摸索才知道自己问题的所在,改 ...
- 使用dbms_stats.gather_table_stats调整表的统计信息
创建实验表,插入10万行数据 SQL> create table test (id number,name varchar2(10)); Table created. SQL> decla ...
- Python 参数校验的进化
Python 函数参数魔法 事情的起因是感觉目前项目中的参数校验方法写的太简单了,很多时候需要在server层再if else处理,于是就动手准备写一个好用一点的,可以自定义校验参数规则的参数校验器, ...
- spring+mybatis项目整合
前辈总结的很详细,贴出链接,参考学习 http://www.open-open.com/lib/view/open1392252233301.html
- (转)Java经典设计模式(2):七大结构型模式(附实例和详解)
原文出处: 小宝鸽 总体来说设计模式分为三大类:创建型模式.结构型模式和行为型模式. 博主的上一篇文章已经提到过创建型模式,此外该文章还有设计模式概况和设计模式的六大原则.设计模式的六大原则是设计模式 ...
- codeforces 460C. Present 解题报告
题目链接:http://codeforces.com/submissions/ywindysai 题目意思:有 n 朵花,每朵花都有一定的高度(第 i 朵花对应 ai),m 天之后要把这些花送给别人. ...
- LoadRunner中两种录制模式的区别
决定我们成为什么样人的,不是我们的能力,而是我们的选择. ——<哈利-波特与密室> 一.先看看两种模式的设置和录制脚本的区别 设置HTML录制模式: 设置URL录制模式: HTML脚本: ...
- Pyhton:汉诺塔游戏
#汉诺塔游戏攻略! def hanoi(n,x,y,z): if n == 1: print(x,'-->',z) else: hanoi(n-1,x,z,y) #将前n-1个盘子从x移动到y上 ...
- UNP总结 Chapter 11 名字与地址转换
本章讲述在名字和数值地址间进行转换的函数:gethostbyname和gethostbyaddr在主机名字与IP地址间进行转换,getservbyname和getservbyport在服务器名字和端口 ...