首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spark无法读取配置单元表,因为S3中的_1和_2子文件夹

Spark无法读取配置单元表,因为S3中的_1和_2子文件夹
EN

Stack Overflow用户
提问于 2017-10-12 01:49:52
回答 2查看 1.2K关注 0票数 1

我有下面3张相同结构的蜂窝表。

代码语言:javascript
运行
复制
drop table default.test1;
CREATE EXTERNAL TABLE `default.test1`(                                                                                                    
`c1` string,                                                                                                                                                                     
`c2` string,                                                                                                                                                                    
`c3` string)                                                                                                                                                                
ROW FORMAT SERDE                                                                                                                                                                        
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'                                                                                                                         
STORED AS INPUTFORMAT                                                                                                                                                                   
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'                                                                                                                       
OUTPUTFORMAT                                                                                                                                                                            
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'                                                                                                                      
LOCATION                                                                                                                                                                                
's3://s3_bucket/dev/dev/testspark/test1/';

drop table default.test2;
CREATE EXTERNAL TABLE `default.test2`(                                                                                                    
`c1` string,                                                                                                                                                                     
`c2` string,                                                                                                                                                                    
`c3` string)                                                                                                                                                                
ROW FORMAT SERDE                                                                                                                                                                        
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'                                                                                                                         
STORED AS INPUTFORMAT                                                                                                                                                                   
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'                                                                                                                       
OUTPUTFORMAT                                                                                                                                                                            
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'                                                                                                                      
LOCATION                                                                                                                                                                                
's3://s3_bucket/dev/dev/testspark/test2/';


drop table default.test3;
CREATE EXTERNAL TABLE `default.test3`(                                                                                                    
`c1` string,                                                                                                                                                                     
`c2` string,                                                                                                                                                                    
`c3` string)                                                                                                                                                                
ROW FORMAT SERDE                                                                                                                                                                        
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'                                                                                                                         
STORED AS INPUTFORMAT                                                                                                                                                                   
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'                                                                                                                       
OUTPUTFORMAT                                                                                                                                                                            
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'                                                                                                                      
LOCATION                                                                                                                                                                                
's3://s3_bucket/dev/dev/testspark/test3/';
代码语言:javascript
运行
复制
hive>insert into default.test1 values("a","b","c");
hive>insert into default.test2 values("d","e","f");
hive>insert overwrite table default.test3 select * from default.test1 UNION ALL select * from default.test2;

一次是在我使用test1和test2的UNION ALL加载数据之后。test3表s3路径的数据位于如下所示的子文件夹中。

代码语言:javascript
运行
复制
PRE 1/                                                                                                                                                             
PRE 2/

当我从hive查询test3表时,它将给出插入的数据的结果。但当我在spark中提出同样的问题时。它的计数为零。pyspark shell:

代码语言:javascript
运行
复制
>>>sqlContext.sql("select * from default.test3").count()
>>>0

如何解决此问题?

EN

回答 2

Stack Overflow用户

发布于 2020-07-27 04:56:58

除了上面的属性外,还需要设置一个属性才能使其正常工作。

代码语言:javascript
运行
复制
spark.conf.set("mapred.input.dir.recursive","true") 
spark.conf.set("mapreduce.input.fileinputformat.input.dir.recursive","true")
spark.conf.set("spark.sql.hive.convertMetastoreParquet", "false") 
票数 3
EN

Stack Overflow用户

发布于 2018-05-23 09:05:36

在运行sqlContext.sql之前尝试设置以下属性

sqlContext.setConf("mapred.input.dir.recursive",“真”);sqlContext.setConf("mapreduce.input.fileinputformat.input.dir.recursive",“真”);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46694573

复制
相关文章

相似问题

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