我有3个具有相同结构的蜂巢表。
```
drop table default.test1;
创建外部表Activity
(
default.test1
字符串,
c1
字符串,
c2
字符串)
行格式SERDER
' org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
作为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 /&#39 ;;
drop table default.test2;
创建外部表c3
(
default.test2
字符串,
c1
字符串,
c2
字符串)
行格式SERDER
' org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
作为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 /&#39 ;;
drop table default.test3;
创建外部表c3
(
default.test3
字符串,
c1
字符串,
c2
字符串)
行格式SERDER
' org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
作为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 /&#39 ;;
hive>插入default.test1值(" a"," b"," c"); hive>插入default.test2值(" d"," e"," f"); hive>插入覆盖表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
如何解决此问题?
答案 0 :(得分:0)
在运行sqlContext.sql之前尝试设置以下属性
sqlContext.setConf(" mapred.input.dir.recursive""真&#34); sqlContext.setConf(" mapreduce.input.fileinputformat.input.dir.recursive""真&#34);
答案 1 :(得分:0)
要完成这项工作,还需要设置一个属性以及上面的属性。
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")