上一篇博客我向大家介绍了如何快速地搭建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的更多相关文章

  1. 通过spark sql 将 hdfs上文件导入到mongodb

    功能:通过spark sql 将hdfs 中文件导入到mongdo 所需jar包有:mongo-spark-connector_2.11-2.1.2.jar.mongo-java-driver-3.8 ...

  2. spark sql 的metastore 对接 postgresql

    本教程记录 spark 1.3.1 版本的thriftserver 的metastore 对接 postgresql postgresql 的编译,参考:http://www.cnblogs.com/ ...

  3. 通过Spark SQL关联查询两个HDFS上的文件操作

    order_created.txt   订单编号  订单创建时间 -- :: -- :: -- :: -- :: -- :: order_picked.txt   订单编号  订单提取时间 -- :: ...

  4. 大数据技术之_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 ...

  5. 1. Spark SQL概述

    1.1 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用 它是将Hive SQL转换成 ...

  6. 第1章 Spark SQL概述

    第1章 Spark SQL概述 1.1 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作 ...

  7. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  8. Spark SQL Example

     Spark SQL Example This example demonstrates how to use sqlContext.sql to create and load a table ...

  9. spark streaming 对接kafka记录

    spark streaming 对接kafka 有两种方式: 参考: http://group.jobbole.com/15559/ http://blog.csdn.net/kwu_ganymede ...

随机推荐

  1. EasyVideoRecorder短视频拍摄、短视频录制SDK支持IOS版本

    在前面的博客<EasyDarwin开发出类似于美拍.秒拍的短视频拍摄SDK:EasyVideoRecorder>和<美拍.秒拍中安卓.IOS短视频拍摄的一些关键技术>中我们简单 ...

  2. 基于EasyDarwin实现幼儿园监控类项目

    移动互联网越来越普及,幼儿园监控类的项目也越来越多,如何能够以最低的成本.最快的速度搭建一套幼儿园监控类的平台成了许多开发者的需求,那么我们今天就来简单探讨一下如何基于EasyDarwin实现一套幼儿 ...

  3. c++的运算符的重载

    1 什么是c++运算符的重载 c++运算符的重载就是说对+.-.>.<等运算符进行重新定义,这样的话,除了基本的类型,所有的类都可以进行基本的运算了,用起来非常方便.特别是用在各种算法中. ...

  4. 关于hibernate配置步骤

    1.导入jar包,根据连接数据库不同改变数据库jar包 2.创建hibernate.cfg.xml文件 几个常用的参数作用: connection.url:表示数据库URL,不同数据库有不同写法 a. ...

  5. assign,copy,strong,weak,nonatomic的具体理解

    例子: NSString *houseOfMM = [[NSString alloc] initWithString:'MM的三室两厅']; 上面一段代码会执行以下两个动作:  1 在堆上分配一段内存 ...

  6. Protocol_ISIS

    集成ISIS协议 作者:Danbo 2015-7-5 ISIS的意思是表示中间系统,并且是为OSI无连接网络协议(OSI Conectionless Network Protocol,CLNP)设计的 ...

  7. UVA11551 Experienced Endeavour —— 矩阵快速幂

    题目链接:https://vjudge.net/problem/UVA-11551 题意: 给定一列数,每个数对应一个变换,变换为原先数列一些位置相加起来的和,问r次变换后的序列是多少 题解: 构造矩 ...

  8. codeforces 469B Chat Online 解题报告

    题目链接:http://codeforces.com/problemset/problem/469/B 题目意思:给出 Little Z 的上线时间段,分别是[a1, b1], [a2, b2],.. ...

  9. laravel基础课程---1、laravel安装及基础介绍(laravel如何安装)

    laravel基础课程---1.laravel安装及基础介绍(laravel如何安装) 一.总结 一句话总结: [修改composer镜像地址].[明确laravel的安装要求].[安装指定版本的la ...

  10. smali语法积累记录

    1.constructor 我们知道运行一个类的时候会先调用static方法中的内容,比如: static { System.loadLibrary("qihooTest"); } ...