【问题标题】:Import csv file into Qubole将 csv 文件导入 Qubole
【发布时间】:2019-02-02 03:53:48
【问题描述】:

我正在使用 qubole 运行 presto 查询。

我需要将 csv 文件上传到我的查询中,但不知道如何执行此操作。

有人有这方面的经验吗?

更多细节,我在分析部分。

这是我目前根据@leftjoin 的回答所得到的 -

use adhoc;
create external table adhoc.test(
  Media_Buy_Key string,
  Day string,
  DSP_Publisher string,
  Final_Media_Cost string
)
row format delimited
fields terminated by ','
lines terminated by '\n'
location 's3://bucket/folder/folder/file.csv/';

然后我运行 hive 查询,它显示为 [Empty]

这是我的 s3 存储桶的样子:

【问题讨论】:

  • 从表位置删除文件名。 s3://bucket/文件夹/文件夹/。删除表并在位置固定的情况下再次创建。还要检查文件中的字段分隔符是否为逗号,并进行相应修复。可以是其他字符,在 DDL 表中指定
  • 不幸的是,它仍然是空的。还添加了我的 s3 存储桶的屏幕截图。 @leftjoin
  • 使用 qubole shell 命令检查表位置。执行 hadoop fs -ls s3://bucket/folder/ 应该会显示你的文件
  • 不幸的是,即使我找到了文件位置,它仍然是空的
  • 意识到我无法访问 qubole 中的 s3 存储桶。感谢您的帮助!

标签: csv import create-table hiveddl qubole


【解决方案1】:

Presto 使用 Hive 元存储来获取表信息及其数据位置。

  1. 将文件上传到某个 S3 位置。实际上,S3 没有位置,它们是使用包含“/”的文件名来模拟的。使用 Qubole S3 接口上传文件。比如说,进入s3://your-bucket-name/your-location/yourfile.csv,这里的位置是s3://your-bucket-name/your-location。如果文件已经在 s3 中,您可以使用 aws s3 cp 命令将其复制到新位置。

  2. 使用 Hive 在您的文件位置上创建表。

use your_schema; create external table test( col1 string, col2 string, ... coln type ) row format delimited fields terminated by ',' lines terminated by '\n' location 's3://your-bucket-name/your-location/'; 检查它在 Hive 中是否有效:

select * from your_schema.test limit 10;
  1. 使用 Presto 查询您的表

select * from your_schema.test limit 10;

【讨论】:

  • 谢谢!我能够将数据上传到 s3 存储桶。当我尝试运行第一个配置单元查询时,use your_schema 等。我在没有指定列的情况下运行它。只保留test。它导致错误提示 - log4j:WARN No such property [rollingPolicy] in org.apache.log4j.RollingFileAppender 知道为什么会这样吗?
  • @nak5120 这不是错误,这是警告 (WARN)。跳过它。真正的错误是另一回事。并且列应该在表 DDL 中指定
  • 谢谢,所以我添加了列名并能够制作表格。尽管只是显示为 [Empty],但没有填充数据。
  • 还展示了我在问题中所做的以提供更多信息@leftjoin
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
  • 2013-07-27
  • 2013-08-12
  • 1970-01-01
  • 2012-12-23
  • 1970-01-01
相关资源
最近更新 更多