我正在用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中工作。但是,通过这种方式,数据可以通过Hive查询,而不能通过spark查询。
我也试过把这些糖果添加到我的火花壳,但没有运气。
"spark.hadoop.mapreduce.input.fileinputformat.input.dir.recursive=true"
"spark.hadoop.hive.mapred.supports.subdirectories=true"发布于 2020-04-24 16:14:18
通过创建一个类似于您的表来测试这个场景,下面的配置对我来说是有效的:
第一套: sqlContext.setConf("spark.sql.hive.convertMetastoreParquet", "false")
然后是: sqlContext.setConf("mapred.input.dir.recursive","true"); sqlContext.setConf("spark.sql.parquet.binaryAsString", "true")
您可以在这里阅读更多内容:1
发布于 2020-04-24 04:30:39
我认为您所做的是在hive-site.xml中启用了Glue目录,而不是在spark site.xml中启用该目录。
您的分类还应包括以下部分:
[ { "Classification": "spark-hive-site", "Properties": { "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory" } }, ]
参考文献:1
https://stackoverflow.com/questions/61400368
复制相似问题