Spark2.x学习笔记:Spark SQL快速入门

时间:2022-09-17 08:05:26

Spark SQL快速入门

本地表

(1)准备数据

[root@node1 ~]# mkdir /tmp/data
[root@node1 ~]# cat data/ml-1m/users.dat |tr -s "::" "," >> /tmp/data/users.dat
[root@node1 ~]# tail - /tmp/data/users.dat
,F,,,
,F,,,
,F,,,
,F,,,
,M,,,
[root@node1 ~]#

(2)确认HDFS已经启动 
(3)进入spark-sql

[root@node1 ~]# spark-sql
// :: WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
// :: WARN ObjectStore: Version information not found in metastore. hive.metastore.schema.verification is not enabled so recording the schema version 1.2.
// :: WARN ObjectStore: Failed to get database default, returning NoSuchObjectException
// :: WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
spark-sql>

(4)创建表

spark-sql> create external table user(
> userid int,
> gender string,
> age int,
> occupation string,
> zipcode int
> )
> row format delimited fields terminated by ','
> stored as textfile
> location 'file:///tmp/data';
Time taken: 4.032 seconds
spark-sql>

(5)查看表结构

spark-sql> show create table user;
CREATE EXTERNAL TABLE `user`(`userid` int, `gender` string, `age` int, `occupation` string, `zipcode` int)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'field.delim' = ',',
'serialization.format' = ','
)
STORED AS
INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 'file:/tmp/data'
TBLPROPERTIES (
'rawDataSize' = '-1',
'numFiles' = '',
'transient_lastDdlTime' = '',
'totalSize' = '',
'COLUMN_STATS_ACCURATE' = 'false',
'numRows' = '-1'
) Time taken: 1.816 seconds, Fetched row(s)
spark-sql>

(6)查询本地数据表

spark-sql> select * from user limit ;
F
M
M
M
M
F
M
M
M
F
Time taken: 2.95 seconds, Fetched row(s)
spark-sql>

使用spark-sql处理Hive MeteStore中的表

注意,默认HDFS已经启动。

(1)hive-site.xml 
hive可以通过服务的形式对外提供元数据读写操作,修改配置文件 $HIVE_HOME/conf/hive-site.xml,增加如下内容

<property>
<name>hive.metastore.uris</name>
<value>thrift://node:9083</value>
</property>

其中,node是启动metastore服务所在的节点。 
我的hive-site.xml内容如下:

[root@node3 ~]# cat /opt/hive-2.1./conf/hive-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.uris</name>
<value>thrift://node3:9083</value>
<description>用于metastore客户端连接远程metestore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node3:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<!--mysql数据库用户名-->
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value></value>
</property>
<property>
<name>mapred.reduce.tasks</name>
<value></value>
</property> </configuration>
[root@node3 ~]#

(2)启动hive metastore

[root@node3 ~]# hive --service hiveserver2  >/dev/null >/dev/null &
[root@node3 ~]# hive --service metastore >/dev/null >& &
[root@node3 ~]# jobs
[]- Running hive --service hiveserver2 > /dev/null > /dev/null &
[]+ Running hive --service metastore > /dev/null >& &
[root@node3 ~]#

(3)将hive的配置文件复制到spark

[root@node3 ~]# scp /opt/hive-2.1./conf/hive-site.xml  node1:/opt/spark-2.2./conf

(4)启动spark-sql

[root@node1 ~]# spark-sql
// :: WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
// :: WARN ObjectStore: Version information not found in metastore. hive.metastore.schema.verification is not enabled so recording the schema version 1.2.
// :: WARN ObjectStore: Failed to get database default, returning NoSuchObjectException
spark-sql>

(5)查看Hive数据表

spark-sql> show tables;
default copyemp false
default demo false
default dept false
default dual false
default emp false
default empbak false
default employees false
default mytb false
default users false
Time taken: 4.908 seconds, Fetched row(s)
spark-sql> select * from users;
aa
bb
cc
Time taken: 3.196 seconds, Fetched row(s)
spark-sql>

Spark2.x学习笔记:Spark SQL快速入门的更多相关文章

  1. MyBatis学习笔记&lpar;一&rpar;——MyBatis快速入门

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4261895.html 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优 ...

  2. 【Python】【学习笔记】1&period;快速入门

    1.软件安装 从官网下载相应版本的安装包,一般不大. https://www.python.org/ 安装一路默认即可 2. 参考教程:快速入门:十分钟学会Python 本文的内容介于教程(Totur ...

  3. 前端学习笔记之ES6快速入门

    0x1 let和const let ES6新增了let命令,用于声明变量.其用法类似var,但是声明的变量只在let命令所在的代码块内有效. { let x = 10; var y = 20; } x ...

  4. 《C&plus;&plus; 101条建议》学习笔记——第一章快速入门

    1.C++程序组成:a.编译指示,由#开始,不由分号结束.只是影响编译过程.b.声明语句,影响编译过程,编译结果中并不会生成对应的指令.只是告诉编译器一些信息.c.可执行过程语句,生成对应的指令.包括 ...

  5. Node&period;js学习笔记3(快速入门)

           一.开始使用Node.js编程           1.hello world           好了,让我们开始实现第一个 Node.js 程序吧.打开你常用的文本编辑器,在其中输入 ...

  6. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  7. 【转】MyBatis学习总结&lpar;一&rpar;——MyBatis快速入门

    [转]MyBatis学习总结(一)——MyBatis快速入门 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC ...

  8. Oracle RAC学习笔记&colon;基本概念及入门

    Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章]    oracle 10g real applica ...

  9. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. 以 Console 方式运行、调试、编译 &period;Net 编写的 Windows 服务

    经常看到一些人在调试 Windows 服务时,很执著的在附加进程后调试!其实 .Net 编写的 Windows 应用程序,包括 Windows 服务都可以编译成 Console 程序!甚至于 ASP. ...

  2. 简单说一下printf&lpar;&quot&semi;&percnt;&ast;s&percnt;s&quot&semi;&comma;xx&comma;xx&comma;xx&rpar;&semi;或printf&lpar;&quot&semi;&percnt;&ast;s&bsol;n&quot&semi;&comma;xx&comma;xx&rpar;&semi;

    大家还记得这个例子吗 #include "public.h" int main() { ; printf("%4d\n",a); ; } 这个输出结果为:    ...

  3. 一个CentOS7的开发环境部署,包括防火墙&vert;VPN&vert;多IP多网关&vert;HTTP代理服务器设置等

    http://www.lenggirl.com/code/centos7.html layout: post title: "一个CentOS7的开发环境部署,包括防火墙|VPN|HTTP代 ...

  4. C语言输出规定长度的整数,不够位数前面补零

    今天在做ACM题目的时候,遇到了这么一个问题,还真别说,这个以前真的没用过,当时就傻掉了,还好这个世界有Google,通过搜索了解了输出这种格式的C语言实现方法.但是没有找到C++的实现方法,希望知道 ...

  5. 各种好用的工具之一 ---- PNGGauntlet

    1.PNGGauntlet实际上是一个图形前端,压缩图像的过程中使用的是PNGOUT, OptiPNG, 和DeflOpt这三款软件. 软件官网:http://pnggauntlet.com/ 可自行 ...

  6. C与C&plus;&plus;中的const

    同样,有下面一段代码: #include <iostream> using namespace std; int main() { ; int *j = (int *) &i; * ...

  7. bzoj 3631&colon; &lbrack;JLOI2014&rsqb;松鼠的新家

    Description 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在"树&q ...

  8. windows下使用curl命令 &amp&semi;&amp&semi; 常用curl命令

    什么是curl命令? curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.Win64下的移植版本. 如何在windo ...

  9. VS2015 生成事件 命令参数

    来源:https://*.com/questions/11001822/copy-files-from-one-project-to-another-using-post-bu ...

  10. python 切片获取list、tuple中的元素

    #-*- coding:UTF-8 -*- L=[] n=6 r=[1,2,3,4,5,6] for i in range(n): L.append(r[i]) print L # =>[1, ...