1

我需要从与我共享 url 的公共 s3 存储桶中导入数据。如何将数据加载到配置单元表中?我试过下面的命令,但它不工作:

create external table airlines_info (.... ) row format 
delimited fields terminated by '|' lines terminated by '\n'
stored as textfile location 'https://ml-cloud-dataset.....*.txt';

失败:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。MetaException(消息:ml-cloud-dataset.s3.amazonaws.com/Airlines_data.txt 不是目录或无法创建目录)

我对 hive 很陌生,我不确定代码。在创建表以将数据加载到配置单元表后,我也尝试了下面的代码,但这也不起作用

load data inpath 'https://ml-cloud-dataset.....*.txt' into table airlines_info;
4

1 回答 1

0

表位置应该是 HDFS 或 S3 中的目录,而不是文件和 https 链接。

手动下载文件,放入本地文件系统,如果您已经创建了表,则使用

load data local inpath  'local_path_to_file' into table airlines_info;

如果您还没有该表,请创建它并在您的 S3 中指定某个位置,或者创建 MANAGED 表(从您的 DDL 中删除 EXTERNAL),如果没有指定位置,它将为您创建位置,使用 DESCRIBE FORMATTED 命令检查位置,稍后您可以根据需要使用将表转换为外部ALTER TABLE airlines_info SET TBLPROPERTIES('EXTERNAL'='TRUE');

load data您可以使用 AWS CLI(提供正确的本地路径和表目录 S3 URL)简单地将文件复制到表位置,而不是命令:

aws s3 cp C:\Users\My_user\Downloads\Airlines_data.txt s3://mybucket/path/airlines_info/
于 2021-01-03T12:51:20.543 回答