首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >星火蜂巢SQL正在返回空的Dataframe

星火蜂巢SQL正在返回空的Dataframe
EN

Stack Overflow用户
提问于 2020-04-24 02:58:34
回答 2查看 1.1K关注 0票数 0

我正在用Glue作为我的蜂巢专卖店。我有一个每小时一次的工作,每小时将文件写入已注册的分区。

表定义:

代码语言:javascript
复制
CREATE EXTERNAL TABLE table_name (
column_1 STRING,
column_2 STRING
)
PARTITIONED BY (process_date DATE)
STORED AS PARQUET
LOCATION "s3://bucket/table_name/";
代码语言:javascript
复制
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位置为

代码语言:javascript
复制
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=00hour=01添加到分区位置,它将在spark中工作。但是,通过这种方式,数据可以通过Hive查询,而不能通过spark查询。

我也试过把这些糖果添加到我的火花壳,但没有运气。

代码语言:javascript
复制
"spark.hadoop.mapreduce.input.fileinputformat.input.dir.recursive=true"
"spark.hadoop.hive.mapred.supports.subdirectories=true"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 1
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61400368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档