将数据从 HDFS 加载到 Kudu

Loading data from HDFS to Kudu

我正在尝试将数据加载到 Kudu table 但得到了一个奇怪的结果。

在 Impala 控制台中,我从 Sqoop 导入的四个 HDFS 文件创建了一个外部 table:

drop table if exists hdfs_datedim;
create external table hdfs_datedim
( ... )
row format
 delimited fields terminated by ','
location '/user/me/DATEDIM';

A SELECT COUNT(*) 告诉我有很多行。查询时数据看起来不错

我用一个标准的select进去复制结果

INSERT INTO impala_kudu.DATEDIM
SELECT * FROM hdfs_datedim;

A SELECT COUNT(*) 告诉我 impala_kudu.DATEDIM 有四行(HDFS 中的文件数 而不是 table.

有什么想法吗?

sqoop 创建的数据实际上是一系列格式不正确的 csv 文件。由于平面文件中的数据,导入失败且没有错误。注意日期格式和字符串中嵌入分隔符的文本字符串。

目前Sqoop还不支持Kudu。可以导入HDFS,然后使用Impala将数据写入Kudu。

如果你在HDFS中有(csv/avro/parquet)格式的数据,那么你可以使用下面的命令将文件导入到Kudu table。

先决条件: 具有兼容版本(1.6 或更高版本)的 Kudu jar

spark2-submit  --master yarn/local  --class org.apache.kudu.spark.tools.ImportExportFiles <path of kudu jar>/kudu-spark2-tools_2.11-1.6.0.jar --operation=import --format=<parquet/avro/csv> --master-addrs=<kudu master host>:<port number>  --path=<hdfs path for data> --table-name=impala::<table name>