将数据从 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>
我正在尝试将数据加载到 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>