Я использую клей в качестве мета-магазина улья. У меня есть почасовая работа, которая записывает файлы каждый час в зарегистрированный раздел.
Определение таблицы:
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.hadoop.mapreduce.input.fileinputformat.input.dir.recursive=true"
"spark.hadoop.hive.mapred.supports.subdirectories=true"