建立內部表
--建立內部表
create table article(sentence string )
row format delimited fields terminated by '\n';
--從本地匯入資料:相當於將path資料hadoop fs -put /hive/warehouse/badou.db/
load data local inpath '/home/badou/mr/code/the_man_of_property.txt'
into table article;
--查詢資料
select * from article limit 3;
建立外部表--外部表
-- hadoop fd -mkdir /data/ext
-- hadoop fd -cp /data/the_man_of_property.txt /data/ext
create external table article2 (sentence string)
row format delimited fields terminated by '\n'
stored as textfile
location '/data/ext';
在hive/warehouse/badou.db下沒有外部表檔案,但是可以在表中查詢到資料
select word, count(1) as cnt
from (
select
explode(split(sentence, ' '))
as word from article
) tgroup by word
limit 100;
【注】執行hive前需要先將hadoop及mysql啟動
select word, count(1) as cnt
from (
select
explode(split(sentence, ' '))
as word from article
) tgroup by word
order by cnt desc
limit 100;
【注】order by 只會產生乙個reduce任務
內部表:資料需要儲存在hive目錄對應的資料夾下,即使hdfs上在其他路徑下已經存在 外部表:可以直接呼叫hdfs上的資料
內部表外部表
資料需要儲存在hive目錄對應的資料夾下,即使hdfs上在其他路徑下已經存在
可以直接呼叫hdfs上的資料
create tabel name
create external table location 'hdfs_path' name(必須是資料夾路徑)
create table art_dt(sentence string)
partitioned by(dt string)
row format delimited fields terminated by '\n';
--從hive表中的資料插入到新錶(分割槽表)中
insert overwrite table art_dt partition(dt='20180924')
select * from article limit 100;
insert overwrite table art_dt partition(dt='20180925')
select * from article limit 100;
-- [root@master ~]# hadoop fs -ls /user/hive/warehouse/badou.db/art_dt
-- found 1 items
-- 2018-09-24 08:45 /user/hive/warehouse/badou.db/art_dt/dt=20180924
--檢視分割槽表列表
show partitions art_dt;
select * from art_dt where dt
between '20180924' and '20180925' limit 10;
每天都會產生使用者瀏覽,點選,收藏,購買的記錄。 按照天的方式去儲存資料,按天做partition
資料庫中資料有使用者的屬性, 年齡, 性別, blog等 每天有新增的使用者,修改資訊 dt=20180924 和dt=20180924會造成大量資訊冗餘。這個時候應該用 overwrite
overwrite++ 7 每天做overwrite dt = 20180922,這天中的資料報含這天之前的所有使用者資訊.
當天之前所有的全量資料。 存7個分割槽,冗餘七份,防止丟失資料。
-- 建立表udata
create table udata(
user_id string ,
item_id string ,
rating string ,
`timestamp` string
)row format delimited fields terminated by '\t'
;--匯入資料
load data local inpath '/home/badou/data/u.data'
into table udata;
--設定顯示欄位名(顯示表頭)
set hive.cli.print.header=true;
select * from udata limit 50;
-- 建立分桶表
create table bucket_users
(user_id string ,
item_id string ,
rating string,
`timestamp` string
)clustered by(user_id)
into 4 buckets;
set hive.enforce.bucketing = true;
-- 插入資料,將之前建立好的udata表中資料插入到4個分桶中,此時會產生4個reduce
insert overwrite table bucket_users
select
cast(user_id as int) as user_id,
item_id,
rating,
`timestamp`
from udata;
oracle常規操作
1 建立表 sql create table test id varchar2 10 age number 2 備份表 sql create table asselect from test group by id 3 刪除表 sql drop table test 刪除表結構和表資料 4 清空表 ...
ROS常規操作
記錄下在使用ros的過程中,一些常用操作。在ros中如果使用乙個工作空間,直接在 bashrc檔案的最後一行加入 source hellow catkin ws devel setup.bash 就可以讓roscd找到工作空間中的包了。但是如果使用多個工作空間,直接在 bashrc 中再加一句話 s...
Ubuntu常規操作
1 查詢ubuntu上的所有裝置 linux中一切皆檔案,裝置也不例外。ubuntu中所有裝置都放在 dev 檔案裡,這裡面存放的並不是裝置驅動程式,而是裝置介面,通過介面可以直接訪問裝置。不同種類的裝置有不同的名稱,詳見 如果要查詢外接裝置的id號 串口號等,只需要在 dev 檔案中顯示出來即可。...