常用spark命令



--spark啓動

localhost$spark-sql --master yarn 啓動主節點 yarn模式

--查看hdfs文件 

hdfs dfs -ls /spark/myDatabase.db 查看我們建的表 其實是是建立在hdfs裏面

hdfs dfs -du -h /spark/myDatabase.db 查看我們的文件大小 也就是我們的表的大小 要接近最小的block大小 如64M或者128M -h 是以我們合適的單位去展示大小 可以根據目錄du下去,知道文件 ,可以查看文件被分開了多少個小文件。

--打包
去到源碼的class文件的頂級目錄bin目錄下 
jar cvf test.jat com 
意思是把bin下的com目錄下全打包成test.jar包


---------------

spark-sql   //打開spark-sql窗口,可執行sql語句,例如查看hive數據庫、表或執行建庫、建表、select等sql操作
spark-shell //打開spark-shell窗口,可執行scala代碼片段。

以下在spark-sql中執行
1、查看已有的database
show databases;


2、創建數據庫
create database myDatabase;


3、登錄數據庫myDatabase;
use myDatabase


4、查看已有的table
show tables;  #查看所有表
show tables 'KHDX'; #支持模糊查詢,表名包含KHDX


5、創建表
create table if not exists myDatabase.khdx_hy  
(hydh string,hymc string,jgdh string)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '\t'
  LINES TERMINATED BY '\n'
STORED AS TEXTFILE; #不帶分區


create table if not exists  myDatabase.nbzz_ckmxz(zhdh string,hydh string,jgdh string,fhdh string, kmh string,bz string,cllbz string,hyye decimal(19,4),hyylj decimal(19,4),hyjlj decimal(19,4),hynlj decimal(19,4))
partitioned by (tjrq string)
row format delimited fields terminated by  '\t'
lines terminated by '\n'
stored as textfile; #帶分區,分區字段tjrq


create table if not exists myDatabase.tmp_nbzz_ckmxz like myDatabase.nbzz_ckmxz; #快速建表,不帶數據
create table if not exists myDatabase.tmp_nbzz_ckmxz select * from  myDatabase.nbzz_ckmxz; #快速建表,同時複製數據




create EXTERNAL table IF NOT EXISTS test (userid string,ptDate string) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
location '/tmp/outer_table/20121214';   #創建外部表test,並指向外部文件位置




create EXTERNAL table IF NOT EXISTS test (userid string) 
partitioned by (ptDate string) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';  #創建外部表test,按字段ptDate分區,未指向外部文件位置


alter table test add partition (ptDate='20121214') location '/tmp/outer_table/20121214';  #指定外部表的外部文件位置,可用於接口文件加載。


6、顯示錶結構
desc khdx_hy;   #顯示錶khdx_hy的表結構
desc formatted khdx_hy; #格式化表khdx_hy的表結構信息,信息更詳細,包括在hdfs的存儲位置
show partitions khdx_hy; #顯示錶khdx_hy的分區信息
show create table khdx_hy; #查看建表語句


7、修改表結構
alter table myDatabase.nbzz_ckmxz add partition(tjrq='20171231')add partition(tjrq='20180101') #手動給分區表增加2個分區
alter table myDatabase.nbzz_ckmxz drop if exists partition (tjrq='20171231');  #手動刪除分區表某個分區
alter table myDatabase.nbzz_ckmxz add columns (fh string);    #追加字段
alter table myDatabase.nbzz_ckmxz change hydh hydh1 string;         #修改字段hydh名稱爲hydh1,類型爲string


drop table myDatabase.nbzz_ckmxz; #刪除表
alter table myDatabase.tmp_nbzz_ckmxz rename to myDatabase.nbzz_ckmxz; #重命名錶




8、操作表
select * from myDatabase.khdx_hy order by hydh limit 10;    #查詢表,顯示前10條記錄。
truncate table khdx_hy;     #清空表數據
insert overwrite table myDatabase.tmp_khdx_hy select * from myDatabase.khdx_hy; #用khdx_hy的數據覆蓋tmp_khdx_hy數據;
insert into myDatabase.tmp_khdx_hy select * from myDatabase.khdx_hy;  #用khdx_hy的數據追加tmp_khdx_hy數據中,不覆蓋原來數據。
load data local inpath '/home/myDatabase/data/org_info.txt' overwrite into table myDatabase.org_info ; #從文件中導入數據到表中
load data local inpath '/home/myDatabase/data/t_ma_fct_etl_acct_liyang_20171231.dat' overwrite into table myDatabase.T_MA_FCT_ETL_ACCT partition(tjrq="20171231");
#從文件導入數據至表的某個分區。
insert overwrite local directory '/home/myDatabase/data/khdx_hy.txt'  row format delimited  fields terminated by '\t' select * FROM myDatabase.KHDX_HY;
#從表khdx_hy導出數據至本地文件khdx_hy.txt












發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章