hive从入门到入门

面临的实际问题是从hive导出部分数据到本地,存储格式不限,但只要后续能读就行。

1-先在北理镜像找到,下载你要的版本,我下的是237,然后再服务器解压tar

2-重命名为hive-2.3.7,此时直接用hive命令没用,

3-将hive地址写入环境然后用source完成,或者直接export设置为hive的地址

搞了半天结果也没搞成功。算了。

直接用线上服务器得了,hive后就进去了,主要是怕我瞎操作把线上的服务整挂了。

直接入门吧。常用命令如下:

show databases;
use default;
desc student;

show **显示数据库,然后就会显示很多个数据库名字,

use **使用哪个数据库。但我发现并没有卵用。

desc **显示表结构。

 

显示hive存储位置,hdfs,直接

show create table student;

 

下面导出数据

1-会不会出现内存占满的情况,也就是说导出的数据太多了。能不能导出部分数据,怎么设置啊?

select * from student limit 1;

展示其中的一行数据。这样就不会卡死了吧,事实上还是很慢的,20s这是真的很慢

2-导出数据到本地

insert overwrite local directory '/data/mydata' select * from student 

然后我的程序就给我出现了个问题,感觉好可怕啊。

FAILED: Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. GC overhead limit exceeded

我在目录下没有发现数据,好可怕啊。

再试一次吧,从中选取某列,即指定列

3-大佬说要分区,这个分区让我不知是什么鬼,然而就是加个关键词,。。。。这就是分区。

加上关键词where及分区关键字即可。

4-两个表怎么关联啊?问题源于,一个表的内容和另一个表有关,只下载一个表的东西也没啥用。同事大佬给我了关键字:关联

群里大佬告诉我join,我看了下资料的确如此。我试试。

然而又是慢死了,我加分区了啊,我加关联了啊,挡不住啊。结果是报错了。尴尬。

Query ID = xu80e94
Total jobs = 1
Stage-1 is selected by condition resolver.
Launching Job 1 out of 1
Number of reduce tasks not specified. Estimated from input data size: 1099
In order to change the average load for a reducer (in bytes):
  set hive.reducer=
In order to limit the maximum number of reducers:
  set hive.max=
In order to set a constant number of reducers:
  set mapreduce.job.reduces=

ctrl+c退出了

发现左右连接,试试看。结果同样是慢死了。

不加where也是死了,woc咋回事啊

待续吧明天。。

 

For Video Recommendation in Deep learning QQ Group 277356808

For Speech, Image, Video in deep learning QQ Group 868373192

I'm here waiting for you

 

 

 

 

 

你可能感兴趣的:(Recommendation)