Apache spark Spark配置单元SQL正在返回空数据帧
我使用胶水作为我的蜂巢元存储。我有一个小时工作,每小时将文件写入一个注册分区 表定义:Apache spark Spark配置单元SQL正在返回空数据帧,apache-spark,hive,amazon-emr,aws-glue,Apache Spark,Hive,Amazon Emr,Aws 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/"; 分区和部件文件的s3位置为 s3://bucket/table_name/process_d
CREATE EXTERNAL TABLE table_name (
column_1 STRING,
column_2 STRING
)
PARTITIONED BY (process_date DATE)
STORED AS PARQUET
LOCATION "s3://bucket/table_name/";
分区和部件文件的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中工作。但通过这种方式,可以通过配置单元而不是通过spark sql查询数据
我也尝试过将这些conf添加到我的spark shell中,但没有成功
"spark.hadoop.mapreduce.input.fileinputformat.input.dir.recursive=true"
"spark.hadoop.hive.mapred.supports.subdirectories=true"
我认为您所做的是在hive-site.xml中启用了Glue目录,但在spark-hive-site.xml中没有启用 您的分类还应包含以下部分:
[
{
“分类”:“星火蜂巢站点”,
“财产”:{
“hive.metastore.client.factory.class”:“com.amazonaws.glue.catalog.metastore.awsgluedatacatalogyhiveclientfactory”
}
},
]
ref:[1]通过创建一个类似于您的表来测试场景,下面的配置对我有效: 第一套:
sqlContext.setConf(“spark.sql.hive.convertMetastoreParquet”,“false”)
那么这个:
setConf(“mapred.input.dir.recursive”,“true”);
sqlContext.setConf(“spark.sql.parquet.binaryastring”,“true”)
您可以在此处阅读更多内容:[1]您使用的spark是什么版本的?EMR-5.27.0上的spark 2.4.4我已启用它。我可以查询所有表,但发布的表在spark sql中返回空数据框,而不是在hive中
"spark.hadoop.mapreduce.input.fileinputformat.input.dir.recursive=true"
"spark.hadoop.hive.mapred.supports.subdirectories=true"