外部文件数据写入hive

hive数据库是基于HDFS的一个数据库,是对hdfs数据的一个映射关系。

注意:hive数据库存入数据的时候不建议使用insert into语句来进行插入,这样的的操作方式在效率上会很低效。

会出现的问题:
ORC格式是列式存储的表,不能直接从本地文件导入数据,只有当数据源表也是ORC格式存储时,才可以直接加载,否则会出现上述报错。

解决办法:
要么将数据源表改为以ORC格式存储的表,要么新建一个以textfile格式的临时表先将源文件数据加载到该表,然后在从textfile表中insert数据到ORC目标表中。

具体步骤如下:
1、通过ftp或者数据其他数据传输工具将数据存放到集群
2、对数据进行相应的预处理
# Python3把数据写入csv 通过pandas来写入csv并指定分隔符号,

df.to_csv(’路径/文件名.csv‘,index=None,header=False,sep='|') #sep是用来指定分隔符号的,默认是逗号```

2、上面的操作会把dataframe输出到你指定的路径下,接下来就需要把它上传到hadoop的hdfs目录下。

3、首先要创建一张hive表,然后使用show create table 表名;进行查看表的location路径,

4、确定好路径之后就是上传你的csv了,上传命令是:

hdfs dfs -put 数据文件 table表名本地位置

5、如果想要在代码中操作也可以

import os

os.system(hdfs dfs -put 数据文件 table表名本地位置)

这样你的数据就可以上传到hive表的目录中,然后跟表产生映射关系。

其实hive表在hdfs中就是一个文件夹,然后文件夹中存放的就是数据,txt或者csv格式的都可以。

使用hive可以最大化的降低hdfs的学习成本

你可能感兴趣的:(数据仓库,hive)