【发布时间】:2020-08-07 13:18:05
【问题描述】:
我使用 Glue 作为我的蜂巢元存储。我有一个每小时将文件写入已注册分区的工作。
表定义:
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 添加到分区位置,它将在 spark sql 中工作。但是通过这种方式,数据可以通过 Hive 查询,但不能通过 spark sql 查询。
我也尝试将这些配置文件添加到我的 spark-shell 中,但没有成功。
"spark.hadoop.mapreduce.input.fileinputformat.input.dir.recursive=true"
"spark.hadoop.hive.mapred.supports.subdirectories=true"
【问题讨论】:
-
你用的是什么版本的spark?
-
EMR-5.27.0 上的 Spark 2.4.4
标签: apache-spark hive amazon-emr aws-glue