spark hive sql正在返回空Dataframe

dohp0rv5  于 2021-06-25  发布在  Hive
关注(0)|答案(2)|浏览(268)

我使用胶水作为我的Hive元商店。我有一个每小时工作,每小时将文件写入已注册的分区。
表定义:

CREATE EXTERNAL TABLE table_name (
column_1 STRING,
column_2 STRING
)
PARTITIONED BY (process_date DATE)
STORED AS PARQUET
LOCATION "s3://bucket/table_name/";
spark.sql("ALTER TABLE table_name ADD IF NOT EXISTS partition(process_date='2019-11-13') 
LOCATION 's3://bucket/table_name/process_date=2019-11-13'")

分区和部件文件的s3位置是

s3://bucket/table_name/process_date=2019-11-13/hour=00/part-01.parquet
s3://bucket/table_name/process_date=2019-11-13/hour=00/part-02.parquet
s3://bucket/table_name/process_date=2019-11-13/hour=01/part-01.parquet
s3://bucket/table_name/process_date=2019-11-13/hour=01/part-02.parquet

如果我加上 hour=00 以及 hour=01 它将在sparksql中工作。但是通过这种方式,数据可以通过hive而不是sparksql进行查询。
我也尝试过将这些conf添加到我的spark shell中,但没有成功。

"spark.hadoop.mapreduce.input.fileinputformat.input.dir.recursive=true"
"spark.hadoop.hive.mapred.supports.subdirectories=true"
fkaflof6

fkaflof61#

我认为您所做的是在hive-site.xml中启用了粘合目录,而不是在spark-hive-site.xml中。
您的分类还应包含以下部分: [ { "Classification": "spark-hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory" } }, ] 参考文献:[1]https://docs.aws.amazon.com/emr/latest/releaseguide/emr-spark-glue.html

t5fffqht

t5fffqht2#

通过创建一个类似于您的表来测试场景,下面的配置对我很有用:
第一套: sqlContext.setConf("spark.sql.hive.convertMetastoreParquet", "false") 那么这个: sqlContext.setConf("mapred.input.dir.recursive","true"); sqlContext.setConf("spark.sql.parquet.binaryAsString", "true") 您可以在这里阅读更多内容:[1]https://home.apache.org/~pwendell/spark-nightly/spark-branch-2.2-docs/latest/sql-programming-guide.html#hive-metastoreParquet表转换

相关问题