Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 配置单元脚本-将文件名指定为S3位置_Amazon S3_Hive - Fatal编程技术网

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

Amazon s3 配置单元脚本-将文件名指定为S3位置,amazon-s3,hive,Amazon S3,Hive,我正在使用以下脚本将数据从DynamoDB导出到S3: 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:co

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

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”的文件夹 然后在这个文件夹下生成一个带有随机名称的文件

是否可以使用配置单元在S3中指定文件名

谢谢大家!

有几件事:

  • hadoop向s3写入数据有两种不同的方式。这将更详细地描述这些差异。由于您使用的是“s3”方案,因此可能会看到一个区块编号
  • 通常,M/R作业(和配置单元查询)会希望将其输出写入多个文件。这是并行处理的产物。实际上,hadoop中的大多数命令/API都可以无缝地处理目录,所以您不应该让它给您带来太多的麻烦。此外,您还可以在目录上使用hadoop fs-getmerge之类的工具来读取单个流中的所有文件
  • 另外,由于上述原因,DDL中外部配置单元表的LOCATION参数始终被视为目录