-连接sparksql:
cd /home/mr/spark/bin ./beeline !connect jdbc:hive2://hostname:port
--切换数据库
use databaseName; --建表:
create table tab_test(
name string,
age int,
num1 double,
num2 bigint,
msg varchar(80) --最后一个字段后面不能有 ',' 号
)
partitioned by (p_age int,p_name string) --分区信息
row format delimited fields terminated by ',' --数据中,属性间用逗号分隔
stored as textfile location '/tab/test/tab_test'; --保存路径,最后也可带'/' 即写成 '/tab/test/tab_test/' -- stored as orc ;orc类型的表,手动推数据(txt / csv 文件;无需表头,行尾无需',',数据文件保存为unix utf-8 无bom格式)不行;
--可以借助textfile类型的临时表插入数据;插入时,要注意字段顺序对应一致。
--指定分区,追加插入;最好不要用 'seletc * ' 表字段变化时,*指代的内容不一样
insert into table tab_test_orc partition(p_age=10,p_name='lucy') select name,age,num1,num2,msg from tab_test_temp;
--指定分区,覆盖插入
insert overwrite table tab_test_orc partition(p_age=10,p_name='lucy') select name,age,num1,num2,msg from tab_test_temp; 查看表字段、结构:
select * from tab_test; --分区字段也会被选出来
+-------+------+-------+-------+------+--------+---------+
| name | age | num1 | num2 | msg | p_age | p_name |
+-------+------+-------+-------+------+--------+---------+
+-------+------+-------+-------+------+--------+---------+
desc tab_test;
0: jdbc:hive2://vmax32:18000> desc tab_test;
+--------------------------+--------------+----------+
| col_name | data_type | comment |
+--------------------------+--------------+----------+
| name | string | NULL |
| age | int | NULL |
| num1 | double | NULL |
| num2 | bigint | NULL |
| msg | varchar(80) | NULL |
| p_age | int | NULL |
| p_name | string | NULL |
| # Partition Information | | |
| # col_name | data_type | comment |
| p_age | int | NULL |
| p_name | string | NULL |
+--------------------------+--------------+----------+
desc formatted tab_test; --更详细地查看表结构;hdfs保存位置
+------------------------------------------------------------------------------------+
| result |
+------------------------------------------------------------------------------------+
| # col_name data_type comment |
| |
| name string |
| age int |
| num1 double |
| num2 bigint |
| msg varchar(80) |
| |
| # Partition Information |
| # col_name data_type comment |
| |
| p_age int |
| p_name string |
| |
| # Detailed Table Information |
| Database: zxvmax |
| Owner: mr |
| CreateTime: Fri Aug 12 11:02:35 CST 2016 |
| LastAccessTime: UNKNOWN |
| Protect Mode: None |
| Retention: 0 |
| Location: hdfs://vmax53:9000/tab/test/tab_test |
| Table Type: MANAGED_TABLE |
| Table Parameters: |
| transient_lastDdlTime 1470970955 |
| |
| # Storage Information |
| SerDe Library: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe |
| InputFormat: org.apache.hadoop.mapred.TextInputFormat |
| OutputFormat: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat |
| Compressed: No |
| Num Buckets: -1 |
| Bucket Columns: [] |
| Sort Columns: [] |
| Storage Desc Params: |
| field.delim , |
| serialization.format , |
+------------------------------------------------------------------------------------+
37 rows selected (0.12 seconds) --删表:
drop table if exists tab_test; --该表分区也会被删除 --删表中数据:
truncate table tab_test; --执行后,分区依然存在
truncate table tab_test partition(p_age=10,p_name='Tom'); --删除某分区 --增加分区:
更完善写法: alter table tab_test add if not exists partition(p_age=11,p_name="Tom"); alter table tab_test add partition(p_age=10,p_name='Tom'); --需要指定所有的分区,不能只是p_age或p_name;否则org.apache.spark.sql.execution.QueryExecutionException:doesn't contain all (2) partition columns
--查看分区: show partitions tab_test;
0: jdbc:hive2://vmax32:18000> show partitions tab_test;
+----------------------+ | result | +----------------------+ |
p_age=10/p_name=Tom | +----------------------+ 1 row selected (0.083 seconds)
--删除分区
alter table tab_test drop if exists partition(p_age=10);
--删除分区时,可以只指定局部
alter table tab_test drop partition(p_name='Tom');
--只执行该条语句,p_age=10分区连同一起被删掉,show partitions 结果为空;hdfs dfs -ls 也看不到 p_age=10的分区 alter table tab_test add partition(p_age=10,p_name='cat');
--只drop p_name='Tome', p_name='cat' 的分区还存在,show partitions 可以查到 --动态分区;动态分区匹配最后选出的字段;只与字段顺序有关系,与名字无关;同时存在静态和动态分区,动态分区必须在静态分区之后
insert into table tab_test(p_age,p_name)
select name,
age,
num1,
num2,
msg,
age as pppp_age, --取不取别名都可以;分区需要出现在select出来的字段的最后位置,为了匹配。
name as p_name --写个对应的别名,看上去好理解一点
from tab_test_temp; 附hdfs相关操作命令: --切换到hdfs用户
su hdfs
--查看hdfs下文件或目录
hdfs dfs -ls /tab/test hadoop hdfs -ls /tab/test
--手动推数据到spark表的某个分区(分区不存在的时候,先alter table xxx add partition ……) 没有分区的spark表,直接put到表目录下即可查到数据
hdfs dfs -put /home/tab_test.csv /tab/test/p_age=10/p_name=Tom
--hdfs创建目录
hdfs dfs -mkdir /tab/test/tab_test/p_age=11 --建立p_age分区后,show partitions看不到
hdfs dfs -mkdir /tab/test/tab_test/p_age=11/p_name=jack --继续建立p_name分区,show partitions 依然无法看到 hdfs文件系统操作指令,类似linux上文件目录操作 --sparkSql另一种连接方式
/home/mr/spark/bin/beeline -u "jdbc:hive2://hostName:port/" -n mr -p ""

SparkSql常用语句的更多相关文章

  1. SQL server 常用语句

    SQL Server中常用的SQL语句   1.概述 2.查询概述 3.单表查询 4.连接查询 5.带有exists的相关子查询 6.SQL的集合操作 7.插入操作 8.删除操作 9.修改操作 10. ...

  2. mysql常用语句总结

    1.创建语句 CREATE DATABASE database_name //创建数据库 //删表 DROP TABLE IF EXISTS `t_social_user_extend`; //建表C ...

  3. JS常用语句

    JavaScript常用语句 1.document.write("");    输出语句 2.JS中的注释为   // 3.传统的HTML文档顺序是:     document-& ...

  4. velocity常用语句速查表

    velocity常用语句 * 变量定义 #set($directoryRoot = "www" ) * #if($!list.size() != 0) //判断list不为空 #f ...

  5. MySQL 常用语句 (汇集)

    原文地址:MySql常用语句作者:wuyanle 一.mysql常用语句 创建,删除和最基本查询: 显示数据库  mysql->show databases; 创建数据库  mysql-> ...

  6. mysql数据库常用语句2

    关于mysql常用语句的整理,上一篇涉及到ddl.dml以及一些简单的查询语句. 1:mysql分页查询 select * from table_name limit 5,10;   从下标为5元素查 ...

  7. mysqldump的常用语句及各参数详解

    mysqldump的常用语句及各参数详解 分类: MySQL 2011-01-11 17:55 1368人阅读 评论(0) 收藏 举报 数据库mysql服务器tableinsertdatabase m ...

  8. mysql学习一 常用语句

    操作系统为windows  1 启动关闭mysql服务 //windows mysqld --console //开启mysql服务 mysqladmin -uroot shutdown //关闭my ...

  9. mo系统常用语句

    mo系统常用语句 一.总结 一句话总结: 1.语言:双语设置(繁体,英语)语句? {:chooseLanguage("確定要刪除么","Are you sure you ...

随机推荐

  1. OpenGL——二维几何变换

    平移.旋转.缩放的实现 #include<iostream> #include <math.h> #include<Windows.h> #include < ...

  2. Linux设备驱动剖析之Input(一)

    前言 以前在移植Qt到开发板上时只知道在配置文件中需要指定触摸屏的设备文件/dev/input/event0,仅此而已.直到一年半前突然想到用红外遥控器控制Tiny6410开发板上的Android系统 ...

  3. NHibernate之旅(21):探索对象状态

    本节内容 引入 对象状态 对象状态转换 结语 引入 在程序运行过程中使用对象的方式对数据库进行操作,这必然会产生一系列的持久化类的实例对象.这些对象可能是刚刚创建并准备存储的,也可能是从数据库中查询的 ...

  4. D - Football (aka Soccer)

    Football the most popular sport in the world (americans insist to call it "Soccer", but we ...

  5. Smarty模板保留缓存

    <?php //缓存 //注:使用缓存需要用到这几个方法: //(ob_start(开启内存缓存); ob_flush(清除内存缓存);) //file_exists这个方法是判断文件是否存在 ...

  6. zookeeper的Java客户端API

    zookeeper作为一个分布式服务框架,主要用来解决分布式数据一致性问题,对多种语言提供了API.这里主要记录下JAVA客户端API的使用. 1.创建会话 客户端可以通过创建一个ZooKeeper实 ...

  7. window.location.reload(false);window.location.reload(true);history.Go(0)区别

    在日常工作中常用的页面刷新方式的区别: 1 window.location.reload(false);  先说说window.location.reload(false);当我们window.loc ...

  8. 垃圾回收GC3种算法的衍生品 增量回收:预测和控制GC所产生的中断时间

    小结: 1.GC和程序处理的本质是无关的: 2.增量回收:预测和控制GC所产生的中断时间: 1. 分代回收 GC和程序处理的本质是无关的,因此它所消耗的时间越短越好.分代回收的目的,正是为了在程序 运 ...

  9. OCR技术(光学字符识别)

    什么是OCR? OCR英文全称是optical character recognition,中文叫光学字符识别.它是利用光学技术和计算机技术把印在或者写在纸上的 文字读取出来,并转换成一种计算机能够接 ...

  10. wpf(dispather调度者)

    一.首先为什么要有dispather? wpf程序是有一个主线程多个子线程组成的.主线程负责创建ui界面,数据接收,处理事件,子线程负责处理消耗资源较多耗时的操作.然而子线程不能直接访问主线程那么这个 ...