一般建表的时候要建外部表,这样一不小心删除的话,还能够恢复。
1、自己设计表结构,然后上传文件到该表中 1.1 新建表,并将本地csv文件上传到该表中(Linux命令行模式下)准备本地文件,一般都是csv文件。
1、注意记下该文件的分隔符;
2、记下该文件字段名称和字段类型,以及字段顺序!!;
3、注意该文件是否有表头,如果有,在下面进行载入空表的时候,表头也会被当做数据传入表中。如果不需要,就把表头去掉,但是注意记下字段顺序;
建表
写好建表的sql文件,假设命名为create_table.sql,内容如下;
--create_table.sql内容如下 CREATE EXTERNAL TABLE IF NOT EXISTS algo_tinyv.sample_data ( user_id STRING COMMENT '用户唯一id', order_id STRING COMMENT '订单编号' )--注意字段顺序与上述文件字段的顺序要保持一致!!!! --PARTITIonED BY(dt STRING) --分区 ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' --以逗号作为分隔符 STORED AS TEXTFILE;
运行 hive -f create_table.sql
-f的含义是运行一个sql文件,若运行单个sql语句则是hive -e “select * from table”;
载入本地数据
运行 hive -e "load data local inpath 'sample_data.csv' overwrite into table 库名.表名 PARTITION(dt='字段名')"
1.2 新建表,并将hdfs文件上传到该表中(hive-sql模式下)1、overwrite的意思是覆盖表algo_tinyv.sample_data中的数据!
2、PARTITION:建一个分区表,如果没有可省略
准备hdfs文件
1、注意记下该文件的分隔符;
2、记下该文件字段名称和字段类型,以及字段顺序!!;
3、注意该文件是否有表头,如果有,在下面进行载入空表的时候,表头也会被当做数据传入表中。如果不需要,就把表头去掉,但是注意记下字段顺序;
建空表并传入数据
hive-sql模式下,运行
use 库名; # 选择数据库 drop table 库名.表名; create external table if not exists 库名.表名 ( appl_no string COMMENT '订单id', score string COMMENT '分数' )--注意字段顺序与上述文件字段的顺序要保持一致!!!! row format delimited fields terminated by 't' --设置分隔符 lines terminated by 'n' stored as textfile location '/home/workdir/yourHDFSfile; --hdfs文件位置
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)