• SparkSql常用语句


    -连接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 ""
  • 相关阅读:
    SysUtils.StringReplace 替换
    SysUtils.UpperCase、SysUtils.LowerCase 大小写转换
    StrUtils.ReverseString 翻转字符串
    [转][文摘20070307]一个总裁做企业的10条心得
    [引]ASP.NET 中 事务处理(SqlTransaction)示例
    荀子《劝学》
    asp.net相关控件的客户端及服务器端的禁用和启用
    [引]生成加密和解密的密钥
    将VS2005的WEB程序 安装到其他电脑上 以及引用WebService 的大概步骤
    ASP.NET通过Global.asax和Timer定时器 定时调用WebService 运行后台代码
  • 原文地址:https://www.cnblogs.com/yongwangzhiqian/p/5764235.html
Copyright © 2020-2023  润新知