在這里給大家做一個簡單的介紹,
創建表:1、新建數據庫xytestdatabase2、編寫建表腳本createtablecreatetableifnotexistsxytestdatabase.employee(namestring,salaryfloat,familysarray<string>,propertiesmap<string,string>,addressstruct<street:string,city:string>)3、在hive命令行下執行建表腳本source/root/xytest/hivehql/createtable
4、查看表的詳細信息describexytestdatabase.employee;describeextenedxytestdatabase.employee;
可以查看在hdfs中表保存的位置
5、可以用更加美觀的方式查看表信息describeformattedxytestdatabase.employee;
拷貝表:createtableifnotexistsxytestdatabase.employee2likexytestdatabase.employee;
管理表(內部表)和外部表管理表和外部表的主要區別是表中數據的歸屬,可以近似的理解為管理表的數據歸hive所有,而外部表的數據不歸hive所有。更直白的說法是當hive刪除表時,管理表的數據會同時別刪除,但是外部表的數據不會被刪除,只會刪除表的定義(表的定義保存在mysql中)。
下面是創建外部表的腳本createexternaltableifnotexistsxytestdatabase.employeeout(namestring,salaryfloat,familysarray<string>,propertiesmap<string,string>,addressstruct<street:string,city:string>)rowformatdelimitedfieldsterminatedby','location'/data/xytestdatabase.employeeout'執行建表語句\
查看表詳情describeformattedxytestdatabase.employeeout;
分區表:管理表和外部表都可以創建分區成為分區表,也就是管理分區表和外部分區表。分區表的本質就是在保存表中數據的時候保存到如下的文件夾中:ployeepartition/street=a/country=bployeepartition/street=a/country=c分區表的作用是優化查詢的效率,不用每次都進行所有文件的掃描,只需要掃描指定的文件夾即可。創建分區表的語句。createtableifnotexistsxytestdatabase.employeepartition(namestring,salaryfloat,familysarray<string>,propertiesmap<string,string>,addressstruct<street:string,city:string>)partitionedby(streetstring,countrystring)
查看分區表詳情:
能夠通過showpartitions查看分區情況。
自定義表存儲格式:表存儲時能夠指定使用的分隔符。
createtableifnotexistsxytestdatabase.employeeselfdelimiter(namestring,salaryfloat,familysarray<string>,propertiesmap<string,string>,addressstruct<street:string,city:string>)rowformatdelimitedfieldsterminatedby'\001'collectionitemsterminatedby'\002'mapkeysterminatedby'\003'linesterminatedby'\n'storedastextfile;
查看分隔符信息
修改表:修改表名稱:altertabletestrenametotest001;把表test的名稱修改為test001。
修改表中的列,添加列、修改列、刪除列。altertabletestaddcolumns(name:string,age:int)
增加分區altertableemployeepartitionaddifnotexistspartition(street='aa',country='bb')partition(street='ee',country='ff')
運行后結果:
刪除表:droptableifexistsxytestdatabase.employee2;
有什么不詳之處跪求大神指點