1、将Impala表与HDFS中的数据文件做链接
这种方式适用于我们已经有了数据文件的情况。
假设有两个数据文件 tab1、tab2,要使用链接方式加载数据,首先先要将数据文件放入HDFS:
$hdfs dfs -mkdir -p /user/impala/tab1 /user/impala/tab2
$hdfs dfs -put tab1 /user/impala/tab1
$hdfs dfs -put tab2 /user/impala/tab2
接着需要创建两张外部表:
$impala-shell
$>CREATE EXTERNAL TABLE tab1(
id INT,
name STRING
...
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',' ------指定分隔符为','
LOCATION '/user/impala/tab1';------指定表的数据文件的存放位置
其中tab1是一个目录,如果这个目录中包含其他文件,无论这个文件名是什么,Impala都会将其作为表的数据文件。
关键字EXTERNAL说明创建的是一张外部表。
可使用show tables查看所有已创建的表。
使用describe [ 表名]查看表结构 describe 可简写为desc。
2、由Impala维护表结构和数据
这种方式适用于没有数据文件,需要通过对其他位置的数据进行过滤转换生成新的数据。
创建内部表:
CREATE TABLE tab3(
id INT,
...
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
向tab3中插入数据:
INSERT OVERWRITE TABLE tab3 SELECT id FROM tab1;
OVERWRITE关键字表示将使用查询结果覆盖表中已存在的数据
3、将已存在的表与已存在于HDFS中的数据文件做关联
进入Impala-shell执行
LOAD DATA INPATH '数据文件路径' INTO TABLE 表名;