0

突然间我无法从 spark 读取 hive 外部 s3 表,我注意到在几个分区下创建了子文件夹。

我希望可以配置任何参数或设置,这样 Hadoop 就不会创建这些子文件夹。

当我从 s3 手动删除子文件夹时,我可以读取表。但需要找到一种方法,以便将来不会随机创建这些子文件夹。

CREATE EXTERNAL TABLE `mydb.mytable`(
    `id` string COMMENT 'from deserializer', 
    `attribute_value` string COMMENT 'from deserializer', 
    `attribute_date` string COMMENT 'from deserializer', 
    `source_id` string COMMENT 'from deserializer')
     PARTITIONED BY (`partition_source_id` int)
     ROW FORMAT SERDE 'com.bizo.hive.serde.csv.CSVSerde' 
     STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' 
     OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
     LOCATION 's3://path/my_data'
     TBLPROPERTIES ('transient_lastDdlTime'='1567170767')

当我运行select *查询时,我得到:

错误:java.io.IOException:不是文件:s3://my_path/partition_source_id=11/1 1 条语句失败。

4

1 回答 1

0

我不认为这个 DDL 创建子文件夹。如果有一些工作将数据加载到's3://path/my_data'并在mydb.mytable上执行DDL add partition,我认为你应该看看这个工作。

于 2019-09-04T00:11:14.573 回答