首页 文章

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

提问于
浏览
1

我有3个具有相同结构的蜂巢表 .

```drop table default.test1; CREATE EXTERNAL TABLE default.test1
c1 字符串,
c2 字符串,
c3 string)
行格式SERDER
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
存储为INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
输出格式
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
地点
's3://s3_bucket/dev/dev/testspark/test1/';

drop table default.test2; CREATE EXTERNAL TABLE default.test2
c1 字符串,
c2 字符串,
c3 string)
行格式SERDER
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
存储为INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
输出格式
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
地点
's3://s3_bucket/dev/dev/testspark/test2/';

drop table default.test3; CREATE EXTERNAL TABLE default.test3
c1 字符串,
c2 字符串,
c3 string)
行格式SERDER
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
存储为INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
输出格式
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
地点
's3://s3_bucket/dev/dev/testspark/test3/';

hive>插入default.test1值(“a”,“b”,“c”); hive>插入default.test2值(“d”,“e”,“f”); hive> insert overwrite table default.test3 select * from default.test1 UNION ALL select * from default.test2;```

一旦我使用UNION ALL test1和test2加载数据 . test3表s3路径具有如下子文件夹中的数据 . PRE 1 /
PRE 2 /

当我从hive查询test3表时,它将给出插入的数据的结果 . 但是当我在火花中查询同样的东西时 . 这是零计数 . pyspark shell:

sqlContext.sql(“select * from default.test3”) . count()0

如何解决这个问题?

1 回答

  • 0

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

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

相关问题