在学习hive前,首先需要准备一份样例数据,然后把这个数据加载进hive的对应表中,
这里我用java写file的方式创建了3个关于城市天气情况的数据,每个字段以空格隔开,\r\n换行,例子如下:
2014-05-23|07:33:58 China beijin cloudy -12 -4 189
然后,用FlashFXP把这3个文件上传到用户目录下,并把它拷贝到dfs的/tmp目录下:
[hadoop@Master ~]$ hdfs dfs -put wether*.txt /tmp
然后,创建一个hive表,叫做weather,代码如下:
hive>
> create table weather
> (date string, country string,
> city string, weath string,
> minTemperat int, maxTemperat int,
> pmvalue int)
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY ' '
> STORED AS TEXTFILE;
PS:此处要注意各个字段和类型
最后,表创建成功后,就需要把这3个文件的内容导入到表中:
hive> load data inpath '/tmp/wether*.txt' into table weather;
Loading data to table default.weather
Table default.weather stats: [num_partitions: 0, num_files: 3, num_rows: 0, total_size: 30888799, raw_data_size: 0]
OK
Time taken: 0.653 seconds
日志显示将3个文件的数据导入到了其中,此时其实是把文件移动到了表在dfs对应的目录下,用下面的语句验证:
hive> dfs -ls /user/hive/warehouse/weather;
Found 3 items
-rw-r--r-- 3 hadoop supergroup 5120124 2014-05-23 07:55 /user/hive/warehouse/weather/wetherdata1.txt
-rw-r--r-- 3 hadoop supergroup 10293769 2014-05-23 07:55 /user/hive/warehouse/weather/wetherdata2.txt
-rw-r--r-- 3 hadoop supergroup 15474906 2014-05-23 07:55 /user/hive/warehouse/weather/wetherdata3.txt
hive>
最后来看下weather表中是否有数据:
hive> select * from weather;
OK
2014-05-23|07:33:58 China beijin cloudy -12 -4 189
2014-05-23|07:33:58 China shenzhen rain -29 -8 199
...
由于数据太多,此处只好CTRL+Z退出了,下一步要做到就是通过hql来查找自己想要的数据