将本地文本文件上传到HDFS上,然后导入hive/impala对应表中

来源:互联网 发布:淘宝直通车怎么收费 编辑:程序博客网 时间:2024/06/06 02:19

1.本地文本文件上传前的准备

将文本保存为"uft-8"格式,并用"|"进行字段间的分割(个人习惯,可以选用其它符号,但要避免和编程语言产生冲突,Hive默认的字段分隔符为ascii码的控制符\001)。

2.将文本文件通过Xshell上传到HDFS上

(1)首先要新建(Alt+N)一个连接,主要填写主机IP,其他根据自己的需要填写。确定之后,打开(Alt+O)刚刚建立的连接,输入用户名和密码,这样就连上了你的服务器了。

(2)新建文件传输(Ctrl+Alt+F),将你的本地文本文件复制到相应的文件夹中,比如我将tbl_adrs_code.txt放在了/home/sjz/dataclean/data下。

(3)输入HDFS命令并执行:

hdfs dfs -put /home/sjz/dataclean/data/tbl_adrs_code.txt /data_clean
(/home/sjz/dataclean/data/tbl_adrs_code.txt是输入文件的路径,data_clean是dhs上的目标文件夹,文件夹需要建好哦,在目标文件夹前要"/",不然会出错:put:'data_clean':No such file or directory)此时你的文件已经复制到dfs上了。

3.在hive/impala上建立对应的表

CREATE TABLE tbl_adrs_code(adrs_id STRING, adrs STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'

4.将HDFS的数据导入相应的表中

LOAD DATA INPATH '/data_clean/tbl_adrs_code.txt' INTO TABLE tbl_code_province

(data_clean/tbl_code_province.txt是文件在HDFS上的路径)

问题:通过以上方式建表,文件的第一行的第一个字段可能会出现特殊符号‘·’,具体原因一直没有闹清楚。所以,可以在文件第一列作为序号类使用,或用相关语句修改

INSERT OVERWRITE TABLE tbl_adrs_code SELECT CASE WHEN adrs_is = ' ·11' THEN '11' ELSE arse_id END AS adrs_id, adrs FROM tbl_adrs_code
吐舌头处女作,大家多指点



阅读全文
3 0