Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark配置单元SQL正在返回空数据帧_Apache Spark_Hive_Amazon Emr_Aws Glue - Fatal编程技术网

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"