首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >配置单元脚本-将文件名指定为S3位置

配置单元脚本-将文件名指定为S3位置
EN

Stack Overflow用户
提问于 2012-07-26 05:06:15
回答 1查看 3.4K关注 0票数 3

我正在使用以下脚本将数据从DynamoDB导出到S3:

代码语言:javascript
运行
复制
CREATE EXTERNAL TABLE TableDynamoDB(col1 String, col2 String)
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' TBLPROPERTIES (
"dynamodb.table.name" = "TableDynamoDB",
"dynamodb.column.mapping" = "col1:col1,col2:col2"
);

CREATE EXTERNAL TABLE TableS3(col1 String, col2 String)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION 's3://myBucket/DataFiles/MyData.txt';

INSERT OVERWRITE TABLE TableS3
SELECT * FROM TableDynamoDB;

在S3中,我想将输出写到一个给定的文件名(MyData.txt),但它目前的工作方式是上面的脚本创建了一个名为'MyData.txt‘的文件夹,然后在这个文件夹下生成了一个随机名称的文件。

有没有可能使用HIVE在S3中指定一个文件名?

谢谢!

EN

Stack Overflow用户

回答已采纳

发布于 2012-07-26 08:21:56

以下是一些事情:

hadoop

  • 有两种不同的方式可以将数据写入s3。此wiki更详细地描述了这些差异。由于您使用的是"s3“方案,因此您可能会看到一个块号。

  • 通常情况下,M/R作业(和配置单元查询)会希望将其输出写入多个文件。这是并行处理的产物。在实践中,hadoop中的大多数命令/API都可以非常无缝地处理目录,所以您不应该让它太困扰您。此外,您还可以在目录上使用类似hadoop fs -getmerge的内容来读取单个流中的所有文件。

  • 由于上述原因,外部配置单元表的DDL中的位置参数始终被视为目录。
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11658632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档